Заголовок $title, на страницах определенного типа материала

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

Аватар пользователя AkeLLbl4 AkeLLbl4 13 марта 2011 в 10:42

В общем такая штука.
На страницах нод с типом материала 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).

Посоветуйте, как бороться?

Комментарии

Аватар пользователя Ch Ch 13 марта 2011 в 10:59

Попробуй в template.php такой код вставить и сбросить кэш.

function mytheme_preprocess_page(&$vars) {
  if (isset($vars['node']) && $vars['node']->type == 'page') {
    $vars['title'] = FALSE;
  }
}
Аватар пользователя finraag finraag 13 марта 2011 в 11:54

У меня почти такойже вопрос, но я хотел для определенных материалов к $title добавлять значения CCK-полей ноды.
Какая есть возможность перекрытия page.tpl.php для определенных "node type"?

Аватар пользователя Ch Ch 13 марта 2011 в 11:58

Посмотри журнал ошибок.
500 наверно от того, что display_errors = Off.
Проверь preprocess_page в template.php. Может быть у тебя уже был такой хук в теме?

Аватар пользователя AkeLLbl4 AkeLLbl4 13 марта 2011 в 12:05

Ch wrote:
Посмотри журнал ошибок.
500 наверно от того, что display_errors = Off.
Проверь preprocess_page в template.php. Может быть у тебя уже был такой хук в теме?

точно, уже использовал preprocess Smile добавил туда, работает спасибо!

Аватар пользователя Ch Ch 13 марта 2011 в 12:26

"finraag" wrote:
Какая есть возможность перекрытия page.tpl.php для определенных "node type"?

Что значит «перекрытия»? Делай также.

function mytheme_preprocess_page(&$vars) {
  if (isset($vars['node']) && $vars['node']->type == 'page') {
    $vars['title'] .= $vars['node']->field_ ...; // Тут сам разберешься
  }
}
Аватар пользователя Dr.MOON Dr.MOON 9 июля 2012 в 19:51

Может банально, но можно тупо подавлять ошибки с помощью @, как-то так:

<?php if(@$node->type != 'page') : ?><?php print $title; ?><?php endif; ?>

А еще можно еще без подавления ошибок попытаться сперва определить переменную $node как-то так:

<?php if(isset($node) && $node->type != 'page') : ?><?php print $title; ?><?php endif; ?>

Аватар пользователя Antoniy Antoniy 18 июля 2013 в 0:05

Для 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