$ node всегда доступен в page.tpl.php


12

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


Возможно, вы захотите пометить это как ответивший, чтобы другие могли использовать этот вопрос :)
Барт

Ответы:


12

$ node не обязательно определяется из API Drupal page.tpl.php :

$ node: объект узла, если с страницей связан автоматически загруженный узел, а идентификатор узла является вторым аргументом в пути к странице (например, node / 12345 и node / 12345 / revisions, но не comment / reply / 12345).


8

По умолчанию только на страницах узлов определяется переменная $ node. Для главной страницы (канала), просмотра страниц, комментариев и т. Д. Их нет.

Если вы хотите, чтобы на странице была определена переменная $ node, которая не является узлом, вам придется отредактировать / создать функцию MYTHEME_preprocess_page (& $ variable) в файле темы template.php.

Чтобы избежать вашей ошибки, поместите в файл шаблона переменную $ node в

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

Или удалите его полностью


$ node может быть определенной переменной на page.tpl.php
Барт,

1
по умолчанию да, если это УЗЕЛ. Если это не так, то это не определено. Выясните свои факты, и не будьте недовольны правильным ответом.
iStryker

Оператор «Только на страницах узлов определяется переменная $ node.» не действует
Барт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.