0

我建议在hook_preprocess_page()从模块完成的实现中使用模板文件,但似乎没有使用建议的模板文件。

模板文件是page--terminal-template.tpl.php,在包含模块的目录下,这是hook_preprocess_page().

function terminal_preprocess_page(&$variables) {
  if (arg(0) == "terminal") {
    $variables['theme_hook_suggestions'][] = "page__terminal_template";
  }
}

有人可以帮我吗?

4

2 回答 2

0

实际上,这个钩子也可以从主题的 template.php 文件和模块的钩子中调用。

在此处参考 Drupal 7 文档。

假设您的活动主题是 MY_THEME,那么代码应该是:

function MY_THEME_preprocess_page(&$variables) {
  if (arg(0) == "terminal") {
      $variables['theme_hook_suggestions'][] = "page__terminal_template";

  }
}

并且模板建议将起作用。

编辑:这个功能也可以通过使用钩子的模块来实现。

于 2013-05-18T18:21:00.290 回答
0

预处理和处理功能可以通过模块来实现。事实上,theme()的文档在显示调用这些函数的顺序时列出了它们。

事实上,Drupal 在主题目录中寻找建议的模板文件。您有以下选择:

  1. 将您的模块建议的模板文件放在包含当前使用的主题的目录中
  2. 按照在模块激活时加载视图模板中报告的内容从模块目录加载模板文件
  3. 建议您要在主题实现的预处理功能中使用的模板文件

按照另一个问题中报告的内容,您将能够使用在模块目录中找到的模板文件。唯一的问题是您使用的通用模板可能与当前启用的主题中使用的默认页面模板不同。

如果要为当前启用的主题添加模板文件,则应在将新模板文件添加到主题后调用drupal_theme_rebuild()以使 Drupal 重新扫描包含模板文件的目录。

于 2013-05-19T08:49:25.960 回答