drupal установил заголовок, не устанавливая переменную $title


Я пытаюсь использовать drupal_set_title() в своем node.tpl.php но текст, для которого я устанавливаю заголовок, отображается только в $head_title (html.tpl.php) переменная, а не переменная $title. Переменная $title по-прежнему имеет значение заголовка узла.

Это в Drupal 7. Я использовал drupal_set_title() несколько раз, как это в Drupal 6, и это сработало отлично.

Это сломано в D7?

Вот как он используется в node--news.tpl.php:

$actual_title = $title; // save for later use
drupal_set_title('News');
 3
Author: tostinni, 2012-01-10

2 answers

К тому времени, как вы нажмете node.tpl.php слишком поздно задавать заголовок, так как $head_title уже задано в template_process_html() и переменная $head_title уже выведена.

Вам нужно будет использовать template_preprocess_node() или аналогичный, чтобы задать нужный заголовок.

 10
Author: Dave Reid, 2012-01-11 12:07:40

По-видимому, пытается установить заголовок в node.tpl.php слишком поздно в порядке выполнения. То же самое относится и к template_preprocess_node(). Вместо этого он может быть установлен в template_preprocess_page:

function mytheme_preprocess_page(&$vars){
    if (isset($vars['node']) && $vars['node']->type == 'news'){
        drupal_set_title('News');
    }
}
 2
Author: Rob Decker, 2012-03-04 01:56:24