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

为什么Drupal不知道我的模板文件?,drupal,themes,Drupal,Themes,这是一个如何覆盖Drupal6中的主题项的问题 根据《Pro Drupal开发》一书,我们可以通过两种方式覆盖主题项: 通过主题函数重写 通过模板文件重写 例如,为了重新格式化面包屑,我可以: 通过功能主题_breadcrumb($breadcrumb) 通过breadcrumb.tpl.php 但是在我的本地测试服务器上,第二种方法(即通过模板文件)不起作用!我根本看不到面包屑,而第一种方法效果很好 你知道怎么会这样吗?配置Drupal需要任何特殊设置吗 谢谢 我的自定义主题“灰度”: 站点\

这是一个如何覆盖Drupal6中的主题项的问题

根据《Pro Drupal开发》一书,我们可以通过两种方式覆盖主题项:

  • 通过主题函数重写
  • 通过模板文件重写
  • 例如,为了重新格式化面包屑,我可以:

  • 通过功能主题_breadcrumb($breadcrumb)
  • 通过breadcrumb.tpl.php
  • 但是在我的本地测试服务器上,第二种方法(即通过模板文件)不起作用!我根本看不到面包屑,而第一种方法效果很好

    你知道怎么会这样吗?配置Drupal需要任何特殊设置吗

    谢谢

    我的自定义主题“灰度”:
    站点\所有\主题\自定义\灰度:
    -breadcrumb.tpl.php
    -灰度。信息
    -node.tpl.php
    -page.tpl.php
    -style.css
    -template.php

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

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

    我个人总觉得通过template.php使用


    您希望使用.tpl.php文件有什么特别的原因吗?

    我个人总是觉得通过template.php使用


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

    主题函数被设置为使用模板函数来生成标记,它永远不会同时使用这两个函数,因为这是毫无意义的

    对于要使用模板的主题函数,必须在
    hook\u theme
    中定义模板时定义模板

    模板+预处理函数和主题函数实际上做的是相同的事情:生成标记。这取决于使用哪种方法最好,这就是为什么我们有两种方法。模板的好处在于,它允许用户更改标记,而不需要对PHP或Drupal有太多了解

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

    • 使用
    • 正在清除管理/设置/性能中的缓存
    • 用于在每次页面加载时清除它。在开发过程中可用,biut将破坏性能

    前后切换主题也可以,但这并不是理想的方式。

    主题函数设置为使用模板函数来生成标记,它永远不会同时使用这两种方法,因为这是毫无意义的

    对于要使用模板的主题函数,必须在
    hook\u theme
    中定义模板时定义模板

    模板+预处理函数和主题函数实际上做的是相同的事情:生成标记。这取决于使用哪种方法最好,这就是为什么我们有两种方法。模板的好处在于,它允许用户更改标记,而不需要对PHP或Drupal有太多了解

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

    • 使用
    • 正在清除管理/设置/性能中的缓存
    • 用于在每次页面加载时清除它。在开发过程中可用,biut将破坏性能

    来回切换主题也可以,但这并不是理想的方式。

    其他模板文件是否按预期工作?也许我的问题措辞不太好。我真正的问题是:我在那里有一个模板文件“breadcrumb.tpl.php”,但Drupal没有意识到这一点,尽管我多次单击“管理->站点构建->模块”(根据“Pro Drupal Dev”)这将刷新主题注册表,但事实并非如此。我解决了问题:我将主题更改为另一个主题,然后切换回我的自定义主题,现在Drupal看到了我的“breadcrumb.tpl.php”。似乎这是刷新主题注册表的正确方法。您是否有其他模板文件按预期工作?也许我的问题措辞不太好。我真正的问题是:我有一个模板文件“breadcrumb.tpl.php”,但Drupal没有意识到,尽管我多次单击“管理->网站建设->模块”(根据“Pro Drupal Dev”的说法,这会刷新主题注册表,但事实并非如此。我解决了问题:我将主题更改为另一个主题,然后切换回我的自定义主题,现在Drupal看到了我的“breadcrumb.tpl.php”。似乎这是刷新主题注册表的正确方法。不是真的。我只是想知道为什么Drupal看不到我的模板文件“breadcrumb.tpl.php”。我知道有多种方法可以更改breadcrumb。谢谢。不是真的。我只是想知道为什么Drupal看不到我的模板文件“breadcrumb.tpl.php”。我知道有多种方法可以更改面包屑。谢谢。谢谢,请参阅上面我的评论。简言之:我需要更改切换到主题,以便Drupal刷新其主题注册表。谢谢,请参阅上面我的评论。简言之:我需要更改切换到主题,以便Drupal刷新其主题注册表。
    function mytheme_breadcrumb($breadcrumb) {
      $sep = ' > ';
      if (count($breadcrumb) > 0) {
        return implode($breadcrumb, $sep) . $sep;
      }
      else {
        return t("Home");
      }
    }