$ 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ę?


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).


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


$ 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.