є $ node, який завжди доступний у page.tpl.php


12

Я періодично отримую помилку про те, що $ node не визначається в одному з моїх файлів шаблону. У мене є проста умова, якщо перевіряється вид вузла, що відображається. Я припускав, що $-вузол завжди доступний, або я помиляюся?


Ви можете позначати це як відповідь, щоб інші могли використовувати це питання :)
Барт

Відповіді:


12

$ node не обов'язково визначається з сторінки.tpl.php Drupal 7 API :

$ node: Об'єкт вузла, якщо на сторінці пов'язаний автоматично завантажений вузол, і ідентифікатор вузла є другим аргументом на шляху сторінки (наприклад, node / 12345 та node / 12345 / reitions, але не коментар / відповідь / 12345).


8

За замовчуванням лише на сторінках вузла визначена змінна $ вузол. Для головної сторінки (каналу) переглядайте сторінки, коментарі тощо, вони не є.

Якщо ви хочете, щоб змінна $ node визначена на сторінці, що це не вузол, вам доведеться відредагувати / створити функцію MYTHEME_preprocess_page (& $ змінних) у вашому файлі теми template.php.

Щоб уникнути помилки, у файл шаблону загорніть змінну $ node у

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

Або видаліть його повністю


$ node може бути визначеною змінною на page.tpl.php
Bart

1
за замовчуванням, так, якщо це NODE. Якщо це не так, то це не визначено. Поясніть факти, і не заперечуйте правдивої відповіді.
iStryker

Заява "Тільки на сторінках вузла визначається змінна $ node". не вірно.
Барт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.