Oft macht es Sinn, auf verschiedenen Seiten die gleichen Inhalte anzubieten, z.B. Teaser oder Werbebanner im Randbereich einer mehrspaltigen Webseite. Dabei sollte man natürlich nicht auf jeder Seite die gleichen Inhalte einpflegen, sondern die Inhalte vererben: Wenn die Inhaltsspalte der aktuellen Seite keinen Inhalt hat, wird der Inhalt von den Eltern-Seiten genommen. Die Vererbung funktioniert rekursiv, d.h. wenn auch die übergeordnete Seite keinen Inhalt hat, wird bei deren Eltern-Seite nachgeschaut usw.
Je nachdem, ob man TemplaVoila einsetzt oder nicht, muss man unterschiedlich vorgehen:
TYPO3 mit TemplaVoila
Vererbung mit der Extension kb_tv_cont_slide
In der TemplaVoila Datenstruktur wird der vorhandene TypoScript Code mit diesem ersetzt:
10 = RECORDS 10.source.postUserFunc = tx_kbtvcontslide_pi1->main 10.source.postUserFunc.field = field_idOfTheField 10.source.postUserFunc.languageFallback = 0 10.tables = tt_content |
field_idOfTheField ist ein Platzhalter und muss mit dem Namen der Inhaltsspalte ersetzt werden.
Vorteile der Extension gegenüber der Lösung mit TypoScript:
- language fallback: Bevor auf die Inhalte der Eltern-Seite zurückgegriffen wird, wird geprüft, ob zu der angegebenen Sprache (im
Beispiel 0, also die Default Sprache) Inhalte vorliegen. - Seitenelemente, für die die Verknüpfung entfernt wurden (d.h. sie wurden im Seiten-Modul „gelöscht“), werden nicht mehr angezeigt
Weitere Erweiterungen:
Die Erweiterung ad_tvcontentslide basiert auf kb_tv_cont_slide, vererbt aber nur Inhalte, bei denen eine Checkbox aktiviert ist. Diese Erweiterung macht Sinn, wenn man die Inhalte nur auf wenigen Seiten vererben möchte.
Die Erweiterung jb_stop_slide integriert in die Seiteneigenschaften eine Checkbox, die das Vererben der Inhalte über kb_tv_cont_slide stoppt.
Über TypoScript
Dieser TypoScript Code kommt in die TemplaVoila Datenstruktur:
10 = CONTENT 10 { table = tt_content slide = -1 select { where = colPos=0 andWhere = deleted=0 andWhere = hidden=0 orderBy = sorting } wrap = <!--TYPO3SEARCH_begin--> | <!--TYPO3SEARCH_end--> } |
Angepasst werden muss nur die colPos, hier kommt der Wert rein, der in Tag oldStyleColumnNumber steht.
ACHTUNG: Elemente, die gelöscht wurden (d.h. deren Verknüpfung wurde entfernt), werden trotzdem ausgegeben! Deshalb muss man immer die „nicht verwendeten Elemente“ händisch löschen!
Die TypoScript Lösung habe ich hier gesehen.
TYPO3 ohne TemplaVoila
Hier kann man das sogenannte „Content Sliding“ einsetzen. Dieses gibt es seit TYPO3 Version 4.
Mehr zum Content Slide im TYPO3-Wiki.
temp.myBorderCol < styles.content.getBorder temp.myBorderCol.slide = -1 |
Mit dem „Content Sliding“ ist es auch möglich, die Elemente von den Eltern-Seiten zu sammeln und alle auszugeben. D.h. je tiefer man navigiert, umso mehr Elemente werden angezeigt. Dies funktioniert mit „styles.content.getBorder.slide.collect“.
Super Beitrag! Content Sliding war mich bis jetzt unbekannt und hat mich gerade echt gerettet :)
Danke für den Beitrag.
temp.myBorderCol.slide = -1 funktioniert bei mir. Allerdings werden die Inhalte auf den Unterseiten immer in der default-Sprache angezeigt. Nur auf der Seite, auf der die Inhalte direkt sind, wird die korrekte Sprache angezeigt.
Überall, wo die Inhalte ererbt wurden, sieht man sie in default-Sprache. Irgendwelche Ideen, warum das sein könnte?
Danke,
Peter
Hallo Peter,
dieses Verhalten hatte ich noch nicht. Wenn die Sprachen sonst richtig konfiguriert sind, sollte auch die Vererbung funktionieren. Wenn du TYPO3 Version 6 einsetzt, würde ich sagen, das ist ein Bug, denn diese Version scheint mir noch etwas unausgereift. In der Vergangenheit scheint es Bugs mit dem Feld „media“ bei der Vererbung gegeben zu haben, aber du möchtest ja normale Inhalte vererben.
Ich fürchte, ich kann dir nicht helfen.