$ node jest zawsze dostępny w page.tpl.php

12

Od czasu do czasu pojawia się błąd związany z niezdefiniowaniem $ node w jednym z moich plików szablonów. Mam prosty warunek, który sprawdza wyświetlany typ węzła. Zakładam, że $ node jest zawsze dostępny, czy się mylę?

strzelec
źródło
Może chcę oznaczyć to jako udzielone, aby inni mogli użyć tego pytania :)
Bart

Odpowiedzi:

12

$ node niekoniecznie jest zdefiniowany, z API page.tpl.php Drupal 7 :

$ node: Obiekt węzła, jeśli istnieje automatycznie załadowany węzeł powiązany ze stroną, a identyfikator węzła jest drugim argumentem w ścieżce strony (np. node / 12345 i node / 12345 / rewizje, ale nie komentarz / odpowiedź / 12345).

Bart
źródło
8

Domyślnie tylko na stronach węzłów jest zdefiniowana zmienna $ node. W przypadku strony głównej (kanału informacyjnego) przeglądaj strony, komentarze itp. Nie są.

Jeśli chcesz, aby zmienna $ node była zdefiniowana na stronie, która nie jest węzłem, będziesz musiał edytować / utworzyć funkcję MYTHEME_preprocess_page (& $ names) w pliku theme.php.

Aby uniknąć błędu, w pliku szablonu zawiń zmienną $ node w pliku

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

Lub usuń go całkowicie

iStryker
źródło
$ node może być zdefiniowaną zmienną na page.tpl.php
Bart
1
domyślnie tak, jeśli jest to NODE. Jeśli nie jest, to nie jest zdefiniowane. Wyjaśnij swoje fakty i nie poddawaj się poprawnej odpowiedzi.
iStryker
Instrukcja „Tylko na stronach węzłów definiuje się zmienna $ node”. nie jest ważny.
Bart