Undefined variable: node Разве так нельзя?

Главные вкладки

Аватар пользователя AntNick AntNick 11 января 2011 в 15:49

Здравствуйте,
в Drupal 7 в page.tpl.php использую код $node->nid
И вот на него Друпал ругается:

Notice: Undefined variable: node в функции include() (строка 191 в файле D:\...\sites\all\themes\comnect\templates\page.tpl.php).
Notice: Trying to get property of non-object в функции include() (строка 191 в файле D:\...\sites\all\themes\comnect\templates\page.tpl.php).

Причем, если обновить страницу, то предупреждение пропадает, а если перейти с другой ссылки, опять появляется.

Разве нельзя получить id ноды в page.tpl.php? И как тогда быть? node.tpl не подходит, т.к. код у Заголовка должен быть, а заголовок в page.tpl выводится Sad Использую для if ($flag->is_flagged($node->nid)) ...

Комментарии

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 11 января 2011 в 19:01

"annya" wrote:
Эта проверка никогда не выдаст TRUE, потому что в page.tpl.php нет переменной $node.

Тут на форуме есть некоторые кто говорит что она там есть.
Видать в каких-то темах в препроцессе нода таки передаёццо.

Ну и мой, правильный способ через menu_get_object()

Аватар пользователя xxandeadxx xxandeadxx 11 января 2011 в 19:08

"RxB" wrote:
Видать в каких-то темах в препроцессе нода таки передаёццо.

The node object, if there is an automatically-loaded node associated with the page

Аватар пользователя AntNick AntNick 11 января 2011 в 19:41

Тема Bartik стандартная из 7ки. Я подтему создал.
Самое интересное, что оно работает, но ругается Sad

С menu_get_object() я че-то совсем все намудрил и у меня вообще страница перестала грузиться)) Или надо в template.php это пихать?

А вот сам изначальный мой код:

<?php if ($node->type == "type1"): ?><?php $flag flag_get_flag('ac');
if (
$flag->is_flagged($node->nid)) {
  print 
'Ok';
  }
  else { print 
'Not Ok';}
?><?php endif; ?>
Аватар пользователя AntNick AntNick 11 января 2011 в 20:34

Добавил $node = menu_get_object(); и пробовал menu_get_object($type = 'node', $position = 1, $path = NULL)
в результате остается только:
Notice: Trying to get property of non-object в функции include()
Sad

Аватар пользователя AntNick AntNick 12 января 2011 в 10:46

А у меня выскакивает при заходе на страницу. Если ее потом обновить, то все ок. Но если снова перейти на нее по ссылке с другой страницы, то опять появится...

Аватар пользователя AntNick AntNick 13 января 2011 в 19:10

В общем, сделал так:
создал блок, запихал код туда. Из блока он не ругается. А блок запихал в новый регион, который создал в нужном мне месте в page.tpl.php Smile Не знаю, насколько это оптимально, но пока косяков не нашел)

Аватар пользователя Cozmi Cozmi 19 января 2011 в 12:08

Блин, таже проблема (drupal6)
$node на странице page-user.tpl.php нету, menu_get_object() тоже не работает.
как получить $node из page?