我刚刚发现,如果您想更改一个特定的页面(或一组页面),您所需要的只是将模板文件添加到核心模板中。例如,我需要使用page——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子主题
亲切的问候
我认为这里有一点混乱:一个名为node--type.tpl.php
的模板文件将自动被任何具有type
类型的节点调用…你不需要自己添加模板建议。
有一个警告,你必须复制原来的node.tpl.php
到你的主题文件夹,并清除你的缓存,否则Drupal不会捡起它。
你也不想使用phptemplate_
前缀…而你希望你的函数被称为MYTHEMENAME_preprocess_page
。
根据节点类型添加页面模板的代码看起来很准确,看看在更改函数名称并清除缓存后是否仍然存在问题。
希望有帮助