Individuelle Weiterleitungsseite pro Datensatz

Hallo Alexander, ich möchte gerne für jeden meiner Datensätze individuelle Weiterleitungsseiten angeben können, um je nach Datensatz auf unterschiedliche Catalog Detailansichten verlinken zu können. Ich kann dabei nicht über die Weiterleitungsseite des Listenmoduls gehen, weil ich sowohl eine Liste habe, in der alle Datensätze angezeigt werden und gleichzeitig die Umkreissuche verwendet werden kann. Parallel dazu habe ich vorgefilterte Listenmodule, in denen automatisch eine Vorauswahl stattfindet, aber keine Umkreissuche verwendet werden soll. Aus beiden Listentypen soll aber für jeden Datensatz auf die individuelle Weiterleitungsseite verlinkt werden. Bei der Umsetzung stoße ich auf mehrere Probleme: 1. Ich kann zwar ein Feld "Weiterleitungsseite" für meine Datensätze hinzufügen, für diese Feld den PagePicker aktivieren und darüber Zielseiten definieren. In den Einstellungen meines Catalogs habe ich das Überschreiben der Weiterleitungsseite aktiviert und für eine interne Weiterleitung das entsprechende Feld als Quelle ausgewählt. In der Auflistung wird dann aber "nur" ein Link auf die ausgewählte Zielseite generiert. Der für das Catalog Detail - Modul wichtige Parameter mit dem Alias des Datensatzes fehlt. 2. Ich kann mein Problem lösen, in dem ich (in meinem Fall) das Template "ctlg_view_table" anpasse und dort die Variable "$this->masterUrl" überschreibe. Dazu muss ich aber umständlich im Template das Seitenobjekt der Zielseite holen und mir dann über "getFrontendUrl" + den Alias des Datensatzes als Parameter eine neue URL generieren lassen. Dabei wird es zusätzlich kompliziert, weil im Feld "Weiterleitungsseite" nicht die ID der Zielseite gespeichert wird, sondern ein String mit einem Inserttag + Seiten ID: "". Dadurch muss ich dann noch im Template die ID aus dem String explodieren etc. Contao speichert in seinen "jumpTo" Felder ja lediglich die Seiten ID ab, gibt es einen Grund warum du das hier anders machst? Vielen Dank für deine Hilfe Arno

Antwort

Der PagePicker nimmt immer den "link_url" InsertTag + Seiten ID als Wert. Da unterscheidet sich Catalog Manager nicht von restlichen Contao Modulen.

Die "jumpTo" Felder von Contao sine keine PagePicker sondern "pageTree" InputType Felder. Der "pageTree" InputType speichert die ID der Seite ab.

Für Catalog Manager Eingabefelder gibt es keine "pageTree" Option. Aber es ist dennoch möglich zu implementieren. Hier eine kurze Anleitung:

  • Erzeuge ein Radio Eingabefeld
  • Erstelle eine " Fremdschlüssel Auswahlliste" mit tl_page Tabelle und der ID als Textspalte
  • Überschreibe den InputType in der system/config/dcaconfig.php zu "pageTree"
  • $GLOBALS['TL_DCA']['ctlg_my_table']['fields']['my_field']['inputType'] = 'pageTree';

Anschließend kannst du dein Template entsprechend anpassen. Theoretisch ist ein pageTree gar nicht nötig, du kannst auch ein Select-Menü mit ausgewählten Detailseiten erstellen.