我刚刚发现,如果你想改变一个特定的页面(或一组页面),你只需要将模板文件添加到核心模板中。例如,我需要使用页面helloworld.tpl.php和node - helloworld.tpl.php模板文件来主题化我的/ helloword页面。
现在我得到的是一个空白屏幕,所以我尝试编写一个预处理函数,添加对自定义主题文件的支持,如:
<?php
/**
* Adding or modifying variables before page render.
*/
function phptemplate_preprocess_page(&$vars) {
// Page change based on node->type
// Add a new page-TYPE template to the list of templates used
if (isset($vars['node'])) {
// Add template naming suggestion. It should alway use doublehyphens in Drupal7.
$vars['template_files'][] = 'page--'. str_replace('_', '-', $vars['node']->type);
}
}
?>
我看到没有语法错误,但我仍然得到一个空白屏幕。仍然没有运气
有人能够弄清楚代码/例程中的错误吗?
Drupal7 + Omega子主题
亲切的问候
答案 0 :(得分:0)
我认为这里有一点点混淆:一个名为node--type.tpl.php
的模板文件将自动为任何类型为type
的节点调用...您不需要添加模板你自己的建议。
有一点需要注意,你必须将原始的node.tpl.php
复制到你的主题文件夹并清除你的缓存,否则Drupal不会把它拿起来。
此外,您不想使用phptemplate_
前缀...而是希望将您的函数调用MYTHEMENAME_preprocess_page
。
根据节点类型添加页面模板的代码看起来很有用,看看在更改功能名称和清除缓存后是否仍有问题。
希望有所帮助:)