Drupal7:尝试使用预处理功能来主题化特定页面,但是......我得到了一个空白屏幕

时间:2011-09-27 12:52:11

标签: drupal preprocessor drupal-7

我刚刚发现,如果你想改变一个特定的页面(或一组页面),你只需要将模板文件添加到核心模板中。例如,我需要使用页面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子主题

亲切的问候

1 个答案:

答案 0 :(得分:0)

我认为这里有一点点混淆:一个名为node--type.tpl.php的模板文件将自动为任何类型为type的节点调用...您不需要添加模板你自己的建议。

有一点需要注意,你必须将原始的node.tpl.php复制到你的主题文件夹并清除你的缓存,否则Drupal不会把它拿起来。

此外,您不想使用phptemplate_前缀...而是希望将您的函数调用MYTHEMENAME_preprocess_page

根据节点类型添加页面模板的代码看起来很有用,看看在更改功能名称和清除缓存后是否仍有问题。

希望有所帮助:)