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

12

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

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

Ответы:

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
}

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

iStryker
источник
$ node может быть определенной переменной на page.tpl.php
Барт,
1
по умолчанию да, если это УЗЕЛ. Если это не так, то это не определено. Выясните свои факты, и не будьте недовольны правильным ответом.
iStryker
Оператор «Только на страницах узлов определяется переменная $ node.» не действует
Барт