Здравствуйте,
в Drupal 7 в page.tpl.php использую код $node->nid
И вот на него Друпал ругается:
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 выводится Использую для if ($flag->is_flagged($node->nid)) ...
Комментарии
Так нельзя. Область видимости у $node только node.tpl.php.
И в рамках page.tpl.php никак не добраться до nid?
Если это страница ноды, возьмите arg(1)
if (isset($node)) ...
Эта проверка никогда не выдаст TRUE, потому что в page.tpl.php нет переменной $node.
Тут на форуме есть некоторые кто говорит что она там есть.
Видать в каких-то темах в препроцессе нода таки передаёццо.
Ну и мой, правильный способ через menu_get_object()
она ещё с пятой версии там есть
Каюсь, была неправа.
The node object, if there is an automatically-loaded node associated with the page
Тема Bartik стандартная из 7ки. Я подтему создал.
Самое интересное, что оно работает, но ругается
С 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; ?>
Добавил $node = menu_get_object(); и пробовал menu_get_object($type = 'node', $position = 1, $path = NULL)
в результате остается только:
Notice: Trying to get property of non-object в функции include()
такая ошибка выскакивает, после создания ноды, в других случаях я этого не заметила.
А у меня выскакивает при заходе на страницу. Если ее потом обновить, то все ок. Но если снова перейти на нее по ссылке с другой страницы, то опять появится...
В общем, сделал так:
создал блок, запихал код туда. Из блока он не ругается. А блок запихал в новый регион, который создал в нужном мне месте в page.tpl.php Не знаю, насколько это оптимально, но пока косяков не нашел)
Блин, таже проблема (drupal6)
$node на странице page-user.tpl.php нету, menu_get_object() тоже не работает.
как получить $node из page?
echo theme('breadcrumb', drupal_get_breadcrumb()); //ыыы
$node_id = arg(1);