Я думаю, причина в том, что это не работает, в том, откуда вы звоните. Система шаблонов в Drupal работает путем создания переменных (из которых $title
- одна) и передачи их в файл шаблона.
К тому времени, как вы доберетесь до node.tpl.php
, переменная $title
, которая доступна только в области действия этого файла, уже установлена в камне. Поэтому, хотя вызов drupal_set_title
будет работать для изменения $head_title
на html.tpl.php
(который вызывается позже, чем node.tpl.php
, он не может изменить переменные файла шаблона, из которого вы вызываете код.
Лучше всего было бы добавить функцию препроцесса в template.php
вашей темы, которая устанавливает заголовок до обработки файла шаблона:
function MYTHEME_preprocess_node(&$vars) {
drupal_set_title('A new title');
}
Если это по-прежнему не работает, попробуйте явно установить $vars['title']
= 'Новый заголовок'; `в той же функции препроцессора.
Лучшим вариантом было бы написать очень маленький пользовательский модуль и реализовать hook_node_view()
, который вызывается задолго до того, как файл шаблона вступает в процесс, и всегда должен работать:
function MYMODULE_node_view($node, $view_mode, $lang_code) {
drupal_set_title('A new title');
}