В общем такая штука.
На страницах нод с типом материала page нужно убрать вывод заголовка, через файл page.tpl.php
Составляю простое условие:
<?php if($node->type != 'page') : ?><h1><?php print $title; ?></h1><?php endif; ?>
Но drupal иногда выкидывает такую ошибку
Notice: Undefined variable: node в функции include()
(строка 9 в файле /var/www/home/hosting_deanig/projects/inazimko/htdocs/sites/all/themes/anonn/templates/page.tpl.php).
Notice: Trying to get property of non-object в функции include()
(строка 9 в файле /var/www/home/hosting_deanig/projects/inazimko/htdocs/sites/all/themes/anonn/templates/page.tpl.php).
(строка 9 в файле /var/www/home/hosting_deanig/projects/inazimko/htdocs/sites/all/themes/anonn/templates/page.tpl.php).
Notice: Trying to get property of non-object в функции include()
(строка 9 в файле /var/www/home/hosting_deanig/projects/inazimko/htdocs/sites/all/themes/anonn/templates/page.tpl.php).
Посоветуйте, как бороться?
Комментарии
Попробуй в template.php такой код вставить и сбросить кэш.
if (isset($vars['node']) && $vars['node']->type == 'page') {
$vars['title'] = FALSE;
}
}
уходит в 500 от такого
да и mytheme не за был сменить на название моей темы
У меня почти такойже вопрос, но я хотел для определенных материалов к $title добавлять значения CCK-полей ноды.
Какая есть возможность перекрытия page.tpl.php для определенных "node type"?
Посмотри журнал ошибок.
500 наверно от того, что display_errors = Off.
Проверь preprocess_page в template.php. Может быть у тебя уже был такой хук в теме?
точно, уже использовал preprocess добавил туда, работает спасибо!
Что значит «перекрытия»? Делай также.
if (isset($vars['node']) && $vars['node']->type == 'page') {
$vars['title'] .= $vars['node']->field_ ...; // Тут сам разберешься
}
}
а где проверка на определенный node_type? я немного слабоват в php
$vars['node']->type == 'page'
Может банально, но можно тупо подавлять ошибки с помощью @, как-то так:
<?php if(@$node->type != 'page') : ?><?php print $title; ?><?php endif; ?>
А еще можно еще без подавления ошибок попытаться сперва определить переменную $node как-то так:
<?php if(isset($node) && $node->type != 'page') : ?><?php print $title; ?><?php endif; ?>
<?php
$node = menu_get_object();
if ($node->type == 'doctor') {echo '<meta property="og:type" content="test" />';}
else {}
?>
Источник: drupal 7 if node type
Упс! Notice: Trying to get property of non-object в функции include()
Для html.tpl.php hook_preprocess_html() уж точно работает.
В template.php :
<?php
function mythemename_preprocess_html(&$vars) {
$node = menu_get_object();
if (
$node && $node->nid) {$vars['theme_hook_suggestions'][] = 'html__' . $node->type;
}
}
?>
Потом шаблон с именем html--mynodetype.tpl.php
Источник Override html.tpl.php per node type