Zur Aufklärung....
DV hat ja im verlinkten Beitrag schon geschrieben, um was es geht. Früher war es so, das die Startseite und einige andere Seiten wie z.B. Suchergebnisse oder Wartungsmeldung keine Definition von
$page_id hatten. Das wiederum hat zu Problemen geführt, z.b. wenn man einen Redirect auf der Startseite hat, z.b. ein Kontaktformular. Diese funktionieren nämlich nur über eine Page-ID.
Die Abfragen in den älteren Templates zielten auch genau auf diese fehlende Page_ID ab und waren zu damaliger Zeit ein einfacher Weg zur Ermittlung der Startseite.
der Originalcode:
$isstartpage = false;
if ( !isset($page_id) ) { $isstartpage = true; }
if ( isset($template_id) AND $page_id==1) { $isstartpage = true; } eine "Übersetzung"
Zeile 1:
$isstartpage ist unwahr, wurde nicht definiert
Zeile 2: ist keine Definition von
$page_id vorhanden, müßte es die Startseite sein. (Wie DV im verlinkten Beitrag erklärt hat, ist das schon seit ein paar Jahren geändert, genau seit WB 2.11.0 und
$page_id steht immer zur Verfügung. Deshalb läuft diese Abfrage ins Leere und
$isstartpage ist immer noch false, also unwahr bzw nicht definiert.
Zeile 3: wurde
$template_id definiert
UND ist
$page_id == 1, müßte es die Startseite sein. (vorausgesetzt, die Startseite hätte die ID == 1)
$template_id ist eine Variable, die der Templateautor auf seinen Domains benutzt. Hat man sie als Benutzer nicht selbst in Gebrauch, kann diese Abfrage also immer nur unwahr sein, demzufolge wäre auch $isstartpage als Ergebnis unwahr bzw nicht definiert
Die Lösung von DarkViper:
if ($page_id === $wb->default_page_id) {
// Startseite
} else {
//beliebige andere Seite
}$wb->default_page_id gibt als Ergebnis die im Backend eingestellte Startseite zurück, d.h. die oberste Seite im Seitenbaum. Ist diese Seite ein MenüLink, dann das Ziel davon
Die Abfrage "übersetzt"
" Ist die aktuelle Page-ID gleich der ermittelten Startseite aus $wb, ist es die Startseite, wenn nicht (else), ist es nicht die Startseite"
Die Seite bleibt dann weiß.
Eine weiße Seite deutet auf einen PHP-Fehler hin und nicht etwa auf das Resultat solcher Abfragen. Diese Abfragen zielen nur darauf ab, zu ermitteln, ob Startseite JA oder NEIN. Abhängig vom Ergebnis, kann man dann andere Dinge schalten, z.b. großes Headerbild vs kleines Headerbild, Headerslider vs starres Headerbild, Breadcrumb oder nicht usw. Im schlimmsten Fall kann also nicht ermittelt werden, ob du dich auf der Startseite befindest oder nicht und dann geht das Script davon aus, das es eben nicht die Startseite ist.
Ich bin mir da recht sicher, das der Fehler im Code liegt, ggf wurde zu wenig oder zuviel geändert. Am schnellsten hättest du eine Lösung, wenn du den entsprechenden Abschnitt kopierst, z.b. von Zeile 1 der index.php bis zum body-Tag oder du zippst diese index.php und hängst sie hier mit an.
Eine andere Möglichkeit wäre: in den Erweiterten WB-Optionen unter SERVER die PHP-Fehlerausgabe auf mindestens "Production" stellen. Dann erhälst du, je nach Fehler, eine Meldung direkt auf der Seite oder in der error.log, die du im Backend unter dem X-Button einsehen kannst.