【问题标题】:custom node template (content type) is not working on drupal 7自定义节点模板(内容类型)不适用于 drupal 7
【发布时间】:2015-09-14 05:16:19
【问题描述】:

将以下代码应用到template.php后,自定义节点模板在Drupal 7上不起作用。例如,node--article.tpl.php

function jstheme_preprocess_page(&$variables) {
  if (isset($variables['node']->type)) {
// If the content type's machine name is "my_machine_name" the file
// name will be "page--my-machine-name.tpl.php".
$variables['theme_hook_suggestions'][] = 'page__' .    $variables['node']->type;
  } 
}       

如果我删除上面的代码,节点--article.tpl.php 正在拾取但不是页面--article.tpl.php

我假设它应该选择页面--article.tpl.php 然后节点--article.tpl.php(如果存在)。这个假设是错误的吗?

【问题讨论】:

    标签: drupal themes


    【解决方案1】:

    上面的代码和你的假设是正确的。我尝试在我的本地使用上面的代码,它工作正常,结果它将page--article.tpl.php作为页面tpl,而对于节点tpl,它使用了node--article.tpl.php。

    检查步骤:

    1. template.php 中编写的hook_preprocess_page 将始终优先。

    【讨论】:

    • 我认为如果 page-article.tpl.php 和 node-article.tpl.php 两者都存在,Drupal 也应该选择它们。根据您的回答,Drupal 似乎只会选择其中一个,即使它们同时存在?
    • 是的,tpl 将是自定义 page.tpl 和自定义节点 tpl。
    • 好的,但我的drupal 不是那样工作的。你有什么线索吗?在 template.php 文件中它只有上面的功能。
    • 在你的页面--article.tpl.php 文件中这个变量应该是$page['content'],它又会调用你的自定义节点tpl。我建议您从 bartick 的 page.tpl 复制所有内容并将其粘贴到您的自定义 tpl 文件中,这同样适用于自定义节点 tpl(bartick node.tpl => 自定义节点 tpl)。做一些改变,看看改变正在发生。
    • 是的。我刚刚使用了“ ”。谢谢!
    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多