为什么Drupal不知道我的模板文件?

时间:2010-10-29 09:49:15

标签: drupal themes

这是一个如何覆盖Drupal 6中的可用项的问题。

根据“Pro Drupal Development”一书,我们可以通过两种方式覆盖可用物品:

  1. 通过主题功能覆盖
  2. 通过模板文件覆盖
  3. 例如,为了重新格式化面包屑,我可以:

    1. 通过功能theme_breadcrumb ($ breadcrumb)
    2. 通过 breadcrumb.tpl.php
    3. 但是在我的本地测试服务器上,第二种方法(即通过模板文件)无效!我看不到任何面包屑,而第一种方法工作正常。

      知道怎么会发生这种情况?我需要配置Drupal的任何特殊设置吗?

      谢谢!

      我的自定义主题“灰度”:
      网站\所有\主题\自定义\灰阶:
        - breadcrumb.tpl.php
        - greyscale.info
        - node.tpl.php
        - page.tpl.php
        - style.css
        - template.php

      相关文件内容:
       * template.php:

      function phptemplate_preprocess_breadcrumb(&$variables) {
        $variables['breadcrumb_delimiter'] = '#';
      }
      
      • breadcrumb.tpl.php:

      alt text

2 个答案:

答案 0 :(得分:4)

主题函数设置为使用模板一个函数来生成标记,它将永远不会使用两者,因为它没有意义。

对于使用模板的主题函数,必须在hook_theme中定义时定义它。

模板+预处理功能和主题功能确实做同样的事情:产生标记。这取决于哪种方法最好使用的情况,这就是为什么我们有两个。关于模板的好处是,它允许用户更改标记,而不需要了解PHP或Drupal。

高速缓存

Drupal缓存主题中定义的所有模板和主题函数,当您创建新模板和主题函数时,需要清除缓存,这可以通过以下方式完成:

  • 使用drush
  • 清除admin/settings/performance
  • 中的缓存
  • 使用devel在每次加载页面时清除它。在开发过程中可用,biut会破坏性能。

来回切换主题也会起作用,但实际上并不是理想的方法。

答案 1 :(得分:0)

我个人总是发现使用hook_breadcrumb()

更容易通过template.php更改面包屑
function mytheme_breadcrumb($breadcrumb) {
  $sep = ' > ';
  if (count($breadcrumb) > 0) {
    return implode($breadcrumb, $sep) . $sep;
  }
  else {
    return t("Home");
  }
}

您希望使用.tpl.php文件的任何特定原因?