覆盖每个节点类型的html.tpl.php不起作用


Override html.tpl.php per node type does not work

我看到这个问题之前被问过几次,我试着回答,我试着修改答案,但是没有。

案例:我已经安装了高级论坛,并且我正在使用appcache(你现在不想逃跑吗?)显然,我需要在浏览论坛时关闭appache,我设法使自定义html.tpl.html为/论坛和/论坛,所以当我寻找论坛列表和主题列表,我不会得到缓存。但是:当我在看论坛主题时,它是一个帖子,帖子类型(机器类型是论坛),我已经在template.php中定义:

function flowrox_preprocess_html(&$vars) {
    $node = menu_get_object();
    if ($node && $node->nid) {
        $vars['theme_hook_suggestion'][] = 'html__' . $node->type;
    }
}

,它不会改变。

所以我能够改变html.tpl.php的路径,但不为节点类型。请帮助我,纠正我的知识做这样的事情。

谢谢大家!!(顺便说一句,我不需要appcache的教训,真诚地,如果你有manifest = x.appcache"在你的HTML标签,它会缓存它,即使它是在网络部分)

$vars['theme_hook_suggestions']$vars['theme_hook_suggestion']有细微差别。

$vars['theme_hook_suggestions'] 是主题建议的ARRAY,该数组末尾的模板优先级高于前面的模板。

// example
$vars['theme_hook_suggestions'][] = 'html__' . $node->type;

$vars['theme_hook_suggestion'] 是一个STRING表示要使用的模板文件,其优先级高于$vars['theme_hook_suggestions']。这意味着如果任何主题建议传递给$vars['theme_hook_suggestion'], $vars['theme_hook_suggestions']将被忽略。

// example
$vars['theme_hook_suggestion'] = 'html__' . $node->type;

我现在为你感到难过。

应该是$vars['theme_hook_suggestions']而不是$vars['theme_hook_suggestion'](建议后面的s)