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 06.03.2012 12:13
Header-Bilder vererben Gelöst
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 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
R
Remo 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 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?
Nachricht hinzufügen
Sie müssen sich anmelden , um diese Konversation zu posten.