drupal_set_title没有设置$ title变量

dec*_*dev 2 php drupal drupal-7

我正在尝试在我的node.tpl.php中使用drupal_set_title但是我设置标题的文本只显示在$ head_title变量而不是$ title变量中.$ title变量仍设置为节点的标题.

这是在Drupal 7中.我在Drupal 6中多次使用了drupal_set_title,它运行得很好.

Cli*_*ive 5

我认为这不起作用的原因是因为你从哪里调用它.Drupal的模板系统通过构建变量(其中$title一个)并将它们传递给模板文件来工作.

当你到达只在该文件范围内可用node.tpl.php$title变量时,它已经完成了.因此,虽然调用drupal_set_title将更改$head_titlefor html.tpl.php(稍后调用node.tpl.php,但它不能更改您从中调用代码的模板文件的变量).

您最好的选择是在主题中添加预处理功能,在template.php处理模板文件之前设置标题:

function MYTHEME_preprocess_node(&$vars) {
  drupal_set_title('A new title');
}
Run Code Online (Sandbox Code Playgroud)

如果仍然无效,请尝试$vars['title']在同一预处理函数中显式设置='新标题';`.

最好的选择是编写一个非常小的自定义模块和实现hook_node_view(),它在模板文件进入流程之前被称为方式,应该始终有效:

function MYMODULE_node_view($node, $view_mode, $lang_code) {
  drupal_set_title('A new title');
}
Run Code Online (Sandbox Code Playgroud)