In page.tpl.php ist $ node immer verfügbar

12

Ich erhalte regelmäßig eine Fehlermeldung, dass $ node in einer meiner Vorlagendateien undefiniert ist. Ich habe eine einfache if-Bedingung, die den angezeigten Knotentyp überprüft. Ich habe angenommen, dass $ node immer verfügbar ist, oder irre ich mich?

marksward
quelle
Vielleicht möchten Sie dies als beantwortet markieren, damit andere diese Frage verwenden können :)
Bart

Antworten:

12

$ node ist nicht unbedingt in der page.tpl.php Drupal 7 API definiert :

$ node: Das Knotenobjekt, wenn der Seite ein automatisch geladener Knoten zugeordnet ist und die Knoten-ID das zweite Argument im Pfad der Seite ist (z. B. node / 12345 und node / 12345 / revisions, aber nicht comment / reply / 12345).

Bart
quelle
8

Standardmäßig ist nur auf Knotenseiten die Variable $ node definiert. Für die Titelseite (einen Feed), Seiten anzeigen, kommentieren usw. gilt dies nicht.

Wenn Sie möchten, dass eine $ node-Variable auf einer Seite definiert wird, die kein Knoten ist, müssen Sie die Funktion MYTHEME_preprocess_page (& $ variables) in Ihrer theme template.php-Datei bearbeiten / erstellen.

Um Ihren Fehler zu vermeiden, setzen Sie in Ihrer Vorlagendatei die Variable $ node in ein

if (isset($node)) {
  // do something with $node
}

Oder entfernen Sie es vollständig

iStryker
quelle
$ node kann eine definierte Variable auf page.tpl.php sein
Bart
1
Standardmäßig ja, wenn es ein NODE ist. Wenn dies nicht der Fall ist, ist es nicht definiert. Stellen Sie Ihre Fakten klar und stimmen Sie nicht mit einer gültigen Antwort ab.
iStryker
Anweisung "Nur auf Knotenseiten ist die Variable $ node definiert." ist nicht gültig.
Bart