Contao: News auf unterschiedlichen Seitenbäumen einsetzen

Contao kann leider etwas starr sein was die Nutzung von News in Installationen mit mehreren Seitenbäumen angeht - gerne besteht es darauf, dass es eine Weiterleitungsseite für den Newsreader zu geben hat. Somit ist der Ensatz eines zentralen Newsartikel-Archives in Multidomaininstalationen gerne mal etwas hakelig. Aber man kann das ändern.

Kleines Helferlein ist dabei wiederum die Extension Inherit_Insert_Tags, die man benutzen kann um das Newslistentemplate den eigene Wünschen entsprechend anzupassen. Wir hätten gerne einen brauchbaren Link - und den basteln wir uns jetzt.

Ein Blick in den Ursprungsquellcode zeigt uns, dass der Link auf eine Detailseite wie folgt generiert wird:

<?php if ($this->text || $this->teaser): ?>
<p class="more"><?php echo $this->more; ?></p>
<?php endif; ?>

Der Link kommt aus dem 'more' und wird zentral im Nachrichtenarchiv festgelegt. Das gefällt uns nicht - wir möchten gerne auf jeder Domain (also in jedem Seitenbaum) eine eigene Seite für das Lesemodul haben. Also setzen wir uns den Link manuell im Template zusammen:

<a href="{ {env::url}}/pfad/zur/detailseite/<?php echo $this->alias; ?>.html"><?php echo $this->newsHeadline; ?></a>

Das ist schon brauchbar - { {env::url}} liefert den Startpunkt, und der Pfad zur Detailseite wird mit dem Alias der News abgeschlossen. Nicht so schön ist, dass wir jetzt für jedes Listmodul ein eigenes Template brauchen. Wir möchten den Pfad ja gerne dynamisch haben.

Also legen wir uns mit IIT ein paar Variablen an, die sich zentral in den Einstellungen der jeweiligen Wurzelseite pflegen lassen. Eine Konstruktion wie news_detailpfad bekommt dann als Variable /pfad/zurdetailseite/' - und das kann ja in jedem Seitenbaum ein unterschiedlicher Pfad sein.

Danach passen wir den Detailink im Newslister noch wie folgt an und sind dann auch schon fertig:

<a href="{ {env::url}}{ {iit::news_detailpfad}}<?php echo $this->alias; ?>.html"><?php echo $this->newsHeadline; ?></a>

Dem Einsatz in einer Multidomainumgebung steht damit nichts mehr im Wege.

Zurück

Einen Kommentar schreiben

Kommentar von JH |

Hallo Carolina,

das war genau was ich gesucht habe!!!! Allerdings habe ich 3 Stunden damit verbracht einen kleinen Fehler zu finden: { {env::url}}! Du schreibst nach der ersten Klammer { ein Blank vor die 2 Klammer. Nachdem das überall bei Dir so steht habe ich geglaubt das muss so sein ;-)

Antwort von Carolina Koehn

Hallo Jürgen,

sorry, ich dachte das wäre klar - wenn ich hier den Blank nicht setzen würde, dann würde Contao das ja versuchen zu ersetzen, und man sähe im Frontend vermutlich gar nichts ... ;-)

Insofern kein Fehler sondern notwendiges Übel.

Kommentar von JH |

ja, bei vermehrtem nachdenken muss ich Dir recht geben. Aber ich bin einfach nicht gleich draufgekommen :-(

Kommentar von Truni |

Danke für diesen Artikel. Das Umschreiben des Weiterleisen-Links unter Contao 3.5 öffnet mit den Newsleser in der aktuellen Domain. Allerdings lädt aber das ganze Layout / Navigation von der Ursprungsdomain – sprich ein «verwirrender Mix»!?
- gibt es als Alternative die Möglichkeit, News mit einer Variable zu kennzeichnen, von welcher Ursprungsdomain sie kommen? Dann weiss der Besucher, dass er dort landen wird (z.B. mit target _blank versehen)
- könnte man evtl. News immer in einem «neutralen Leser» öffnen, der nicht an die Domain gebunden ist?

Antwort von Carolina Koehn

Ein "target:_blank" könntest Du ja ebenfalls im angepassten Template unterbringen, oder?

Und dann wäre es sicher eine gute Idee, die entsprechenden Links via CSS (mit :before) mit einem Symbol zu kennzeichnen. Da gibt es schon viele Möglichkeiten.

In Contao 3.5 kann man übrigens auch die Extension zu Newskategorien von Codefog nutzen. Da gibt's dann Out of the Box eine ganze Reihe weiterer Möglichkeiten, unter anderem halt auch die kategorieabhängige Bestimmung der Weiterleitungsseite.

Hast Du Fragen oder Anregungen? Dann nutze die Kommentarfunktion.

Die Verarbeitung Ihrer Daten erfolgt im Rahmen unserer Datenschutzerklärung.