Ankündigung

Einklappen
Keine Ankündigung bisher.

Erweiterte tl_member Alias nutzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tim
    antwortet
    Richtig, das ist quasi umgedreht. Einen CC gesteuerten Sichtbarkeits-Button brauchts nicht. Pack einfach als eigene SQL-Bedingung ein disabled!=1 rein in die Liste.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Das hat so ähnlich funktioniert. Hier unsere Umsetzung.

    Code:
    <?php $alias = pathinfo(basename($this->replaceInsertTags('{{env::request}}')), PATHINFO_FILENAME); ?>
    <?php if($alias == $this->field('id')->value()): ?>
    <?php $objHandler = new $GLOBALS['TL_PTY']['error_404']();
    $objHandler->generate($objPage->id);
    ?>
    <?php else: ?>
    <?php echo // alle weiteren Inhalte ?>
    <?php endif; ?>
    Es schließt sich daran gleich eine weitere Herausforderung an.

    Das unveröffentlichen eines Mitglieds über die Mitgliederverwaltung führt nicht dazu, dass es in einer CC Liste unveröffentlicht ist.

    Der in der Mitgliederverwaltung verfügbare Veröffentlichungsbutton funktioniert umgekehrt zur CC Logik.

    Ich habe nach dem Schema oben
    Code:
    $GLOBALS['TL_DCA']['tl_pct_customcatalog']['palettes']['existing'] .= ';publishedField';
    in der dcaconfig ergänzt. Damit kann ich ein Feld für die Veröffentlichung auswählen.

    Der Effekt ist allerdings, dass der Button in der Mitgliederverwaltung nicht mehr sichtbar ist und wie beschrieben, ein "disabled" Mitglied in der CC Liste sichtbar ist und die veröffentlichten nicht.

    Ich nehme mal an, dass sich diese Logik in CC nicht einfach umdrehen lässt.

    Und für die Listen müsste wohl ein eigenes "aktive" Feld angelegt werden mit der Konsequenz, dass die Mitglieder nicht über die Buttons verwaltet werden können.

    niwwor?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    ? der Alias der Seite? Crawlen?

    Auf dem Leser geht direkt das autoitem Inserttag

    ID= {{customcatalog::tl_member::autoitem::id}}
    Alias= {{customcatalog::tl_member::autoitem::alias}} (Falls Alias-Feld "alias" heisst.

    In der Url ist des auto_item Paramter, wie bei den News oder direkt über den internen von CC ansprechen.
    \Contao\Input::get('auto_item')

    https://forum.premium-contao-themes....0730#post20730
    https://forum.premium-contao-themes....3363#post13363

    Der autoitem Parameter ist im Falle von einer Zahl/Id in der Url hier auch leer, weil der bei aktiven Alias-Feld strikt einen Alias sucht.

    Code:
    <?php
    $id = \Contao\Controller::replaceInsertTags('{{customcatalog::tl_member::autoitem::id}}');
    $alias = \Contao\Controller::replaceInsertTags('{{customcatalog::tl_member::autoitem::alias}}');
    
    if( empty($alias) || \Contao\Input::get( $GLOBALS['PCT_CUSTOMCATALOG']['urlItemsParameter'] ) == $id )
    {
    echo 'Id ist hier nicht erwünscht';
    return;
    }
    ?>
    Zuletzt geändert von Tim; 16.11.2023, 10:31.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Wäre eine Idee, mit {{page::alias}} erhalte ich bei Leserseiten nur leider dein Seitenalias und nicht die ID (also z.B. "member") und mit {{env::request}} erhalte ich den kompletten String -> d.h. man müsste hier die einzelne ID hier herauscrawlen...

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von eblick Beitrag anzeigen
    Works perfect! Danke.

    Eine Frage dazu allerdings noch. Aktuell sind die Datensätze sowohl mit der ID als auch dem Alias erreichbar.
    Wie kann man den Zugriff über die ID ausschließen?
    Der Alias könnte auch eine Zahl sein.

    Du kannst oben im Leser-Template eine Abfrage ergänzen und die gesetzten Alias aus der Url gegen den geöffneten Datensatz und dessen ID prüfen. Darauhin quasi 404 umleiten oder halt die Ausgabe unterdrücken.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Works perfect! Danke.

    Eine Frage dazu allerdings noch. Aktuell sind die Datensätze sowohl mit der ID als auch dem Alias erreichbar.
    Wie kann man den Zugriff über die ID ausschließen?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Alias-Auswahlfeld einfach via dcaconfig im Backend anzeigen lassen für Modus Erw. Tabellen:

    dcaconfig.php
    Code:
    $GLOBALS['TL_DCA']['tl_pct_customcatalog']['palettes']['existing'] .= ';aliasField';
    Dann alles Bordmittel ab hier:
    • Ein Alias-Attribut anlegen lassen in tl_member
    • In der CC Konfig für tl_member auswählen (Ja, das Feld wird 2x angezeigt, aufgrund von Ladereihenfolgen, ist aber technisch nicht ausschlaggebend, einfach das untere Feld nutzen) -> Alias-Attribut auswählen
    • (Alias in den Mitglieder-Datensätzen ergänzen)
    • CC Liste für die tl_member Erw. Tabelle
    • CC Leser passend dazu
    Weiterlesen-Link wird nun mit Alias gebildet. Liste und Leser arbeiten wie gewohnt.

    https://dev4-13.premium-contao-theme...tl-member.html
    Angehängte Dateien
    Zuletzt geändert von Tim; 16.11.2023, 08:49.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    zum Test einfach in der DB einmal direkt einsetzen
    Dann nochmal dazu. Was soll ich hier wo in die Datenbank eintragen?
    den Alias in das ID Feld?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Du kannst in dem Modus Erw. Tabelle standardmäßig kein Alias-Feld wählen. Das musst du dir via dcaconfig anzeigen lassen oder halt zum Test einfach in der DB einmal direkt einsetzen.

    Die Liste dieser Erw. Tabelle wird daraufhin den Weiterlesen-Link mit Alias anstelle von ID bilden (falls es klappt)

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Sorry, ich verstehe immer noch nicht was du genau meinst.

    Ich habe ein Alias Feld bereits über die DCA angelegt und es ist auch grundsätzlich verfügbar und gefüllt.
    Wie kann dieses in der Ausgabe im Leser Modul für die URL herangezogen werden anstelle der ID?

    also domain.de/member/hans-wurst.html statt domain.de/member/2.html

    das Feld mit der ID des passenden Alias-Feldes einfach ausfüllen.
    das verstehe ich an der Stelle ebenfalls nicht. Was ist die ID des passenden Alias Feldes?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von eblick Beitrag anzeigen
    Das verstehe ich nicht ganz. "setzt in der DB ein Alias-Feld ein".
    Was passiert denn bei der Routine der Ausgabe Einstellungen?
    Kann das nicht über die config eingestellt werden oder evtl. auch bei erweiterten Tabellen über CC eingerichtet werden?
    Setz dir das Feld über die dcaconfig.php (oder vergleichbar) ein oder in PHPmyadmin einfach zum Test in diesem Datensatz das Feld mit der ID des passenden Alias-Feldes einfach ausfüllen.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Das verstehe ich nicht ganz. "setzt in der DB ein Alias-Feld ein".
    Was passiert denn bei der Routine der Ausgabe Einstellungen?
    Kann das nicht über die config eingestellt werden oder evtl. auch bei erweiterten Tabellen über CC eingerichtet werden?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Stimmt. Dann geht es nicht out of the box. Kannst versuchen es auszutricken und setzt in der DB ein Alias-Feld ein - so dass das Feld quasi gefüllt ist.

    Einen Kommentar schreiben:


  • eblick
    antwortet
    Ausprobiert habe ich es ja, ich kann zwar ein alias Feld ergänzen, aber ich habe keine Möglichkeit, es in der Konfiguration auszuwählen.
    Bei erweiterten Tabellen fehlen ja in der Konfiguration die Ausgabeeinstellungen.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bildschirmfoto 2023-11-16 um 08.14.43.png
Ansichten: 81
Größe: 55,2 KB
ID: 28183

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von eblick Beitrag anzeigen
    Wir haben mit CC diverse tl_member Tabellen erweitert und nutzen hier Listen/Leser.

    Mit dieser Konfiguration wird auf der Leserseite jedoch immer die Member ID als Alias verwendet.

    Besteht eine Möglichkeit hier ein eigenes Alias Feld zu nutzen, so wie es bei regulären CCs möglich ist?
    Ich denke ja. Einfach ausprobieren.

    Einen Kommentar schreiben:

Lädt...
X