Willkommen im neuen Forum von concrete5.de.
Die Anmeldung ist ab dem 15.10.2020 nur noch mit E-Mail Adresse und Passwort möglich. Eine Anmeldung mit Benutzername ist nicht mehr möglich.

Diese Nachricht löschen.
Anhang entfernen?
Zurück zur Themenliste
T
tts 0.png 06.03.2012 12:13

Header-Bilder vererben

Wie üblich, haben meine Websites häufig folgende Struktur: Home Hauptseite 1 -----Unterseite 1.1 -----Unterseite 1.2 -----Unterseite 1.3 Hauptseite 2 -----Unterseite 2.1 -----Unterseite 2.2 -----Unterseite 2.3 Hauptseite 3 -----Unterseite 3.1 -----Unterseite 3.2 -----Unterseite 3.3 ... Ich hätte gerne Folgendes: - Jede Hauptseite soll ein eigenes Header-Bild haben. - Dieses Header-Bild soll sich auf die jeweiligen Unterseiten vererben. - Das Ganze soll für die Website-Redakteure pflegbar und auf beliebig viele Hauptseiten erweiterbar sein. Bisher habe ich sowas immer mit 3 verschiedenen Seitentypen (Start-, Haupt-, Unterseite) und dem Add-On "Area Inherit Block" gelöst. Das hat immer wunderbar geklappt. Nun ist aber der Area Inherit Block (noch) nicht für die neueste c5-Version verfügbar... Weiß jemand eine andere/geschicktere Möglichkeit, sowas umzusetzen? (Etliche verschiedene Seitentypen halte ich nicht für sinnvoll/praktikabel. Außerdem sollten die Redakteure keinen Zugriff auf die Page Defaults haben.) Viele Grüße Karl
R
Remo 0.png 06.03.2012 19:03
Hallo Karl, dafür gibt's viele Lösungen. Hier ist zum Beispiel eine welche direkt im Theme Code platziert werden muss: <?php $parentCollectionID = $c->getCollectionParentID(); // this means that our parent is the home page if ($parentCollectionID == 1) { // display standard header area $areaHeader = new Area('Header'); $areaHeader->display(); } else { // display header area of parent page $areaHeaderParent = new Area('Header'); $areaHeaderParent->display(Page::getByID($parentCollectionID)); } ?> Viele Grüsse Remo
T
tts 0.png 06.03.2012 20:30
Hi Remo, das sieht ja prinzipiell schon mal sehr gut aus! Allerdings funktioniert das Ganze nicht mehr, wenn man noch weitere Navigationsebenen hat (also auf Unter-Unterseiten usw.). Fällt dir dazu vielleicht auch eine Lösung ein?
R
Remo 0.png 07.03.2012 09:03
In diesem Fall muss man halt noch mehr Seiten prüfen. Du kannst zum Beispiel mit untenstehender Funktion eine Liste der übergeordneten Seiten auslesen und dann auf die gewünschte Stufe zugreifen: $nh = Loader::helper('navigation'); $parentPages = $nh->getTrailToCollection($c);
T
tts 0.png 09.03.2012 15:26
Gut, dann sollte Folgendes funktionieren: <?php $nh = Loader::helper('navigation'); $parentPages = $nh->getTrailToCollection($c); $reversedParentPages = array_reverse($parentPages); // this means that we're on a sub-page if (is_object($reversedParentPages[1])) { $topLevelParentID = $reversedParentPages[1]->getCollectionID(); // display header area of top-level parent $areaHeaderParent = new Area('Header'); $areaHeaderParent->display(Page::getByID($topLevelParentID)); } // this means that we're on a top-level page else { // display standard header area $areaHeader = new Area('Header'); $areaHeader->display($c); } ?> Ist deiner Meinung nach irgendetwas dagegen einzuwenden?
R
Remo 0.png 09.03.2012 16:47
Ohne den Code getestet zu haben, sieht okay aus!
T
tts 0.png 09.03.2012 16:58
Getestet hab ich ihn schon. Hat einwandfrei funktioniert! Besten Dank, Remo! Du hast mich auf den richtigen Weg gebracht...

Nachricht hinzufügen