Drupal 7如何覆盖特定内容类型的page.tpl?

Drupal 7如何覆盖特定内容类型的page.tpl?,drupal,drupal-7,drupal-theming,Drupal,Drupal 7,Drupal Theming,我想为特定的内容类型覆盖page.tpl.php。 我试过这些东西,没有什么对我有用 page--article.tpl.php page--node--article.tpl.php page--node--type--article.tpl.php page--节点类型--article.tpl.php page--type--article.tpl.php 但当我按编号将特定节点作为目标时,即page--node--8.tpl.php,效果很好。 我认为page--article.tpl.

我想为特定的内容类型覆盖page.tpl.php。 我试过这些东西,没有什么对我有用

  • page--article.tpl.php
  • page--node--article.tpl.php
  • page--node--type--article.tpl.php
  • page--节点类型--article.tpl.php
  • page--type--article.tpl.php
  • 但当我按编号将特定节点作为目标时,即
    page--node--8.tpl.php
    ,效果很好。 我认为
    page--article.tpl.php
    应该可以工作,但我不知道为什么它不工作

    请告诉我我是否把它命名错了。我如何调试这些东西。我听说我可以使用Devel模块,但对此一无所知。如果能给你一点正确的暗示,我们将不胜感激


    提前感谢

    您是否记得清除缓存(在“管理”>“站点配置”>“性能”下),以便Drupal“了解”您的新文件并使用此文件而不是默认文件

    看到这里了吗


    此外,您可能需要添加一个预处理挂钩(我自己没有使用D7,只是5/6-我认为这有点变化。)似乎给出了更多细节

    我知道这是一个老问题,但如果其他人来到这里,我在drupal 7中覆盖内容类型的方式是这样的


    节点--contenttype.tpl

    您必须确保您的模板能够处理此问题。。。我在这里得到了一个对我有用的代码片段:


    如果内容类型与基本页面不同,则需要覆盖该内容类型的特定节点模板。请查看以下内容:

    在此页面下,复制/粘贴node.tpl.php页面中的项目,并根据需要覆盖它。您可以通过$node专门访问节点

    您的文章模板为:

    节点--article.tpl.php


    创建后,请确保清除缓存以确保其正常工作。

    因此,根据您试图完成的任务,可能有一些CSS技巧可以帮助您解决问题

    例如,要覆盖特定节点类型的任何CSS规则,请记住该节点类型的页面的主体类为
    “node type-[type]”
    (即:
    .node-type-article

    然后,您可以按如下方式覆盖CSS:

    body.node-type-article #selector {}
    

    我也遇到了同样的问题

    节点--recipe.tpl.php 不是

    页面--recipe.tpl.php


    当然,这是一个名为“recipe”的内容类型。

    始终清除缓存

    转到/admin/config/development/performance并单击清除缓存按钮。如果您对后端的结构进行了更改,但它们没有按预期显示,那么这应该是您要做的第一件事

    否则,你几乎是对的

  • 页面--content-type-name.tpl.php

  • 将允许您设置内容类型模板的主题。

    步骤1.创建内容类型例如:我的内容类型为“fullwidthpage”

    第二步。复制page.tpl.php并重命名为模板文件夹中的页面--fullwidthpage.tpl

    第三步。将此代码添加到template.php

    function <strong>YOUR_THEME_NAME_HERE</strong>_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;
      }
    }
    
    function此处为您的主题名预处理页面(&$variables){
    if(isset($variables['node']->type)){
    //如果内容类型的机器名为“我的机器名”,则文件
    //名称将是“page--my machine name.tpl.php”。
    $variables['theme\u hook\u suggestions'][]='page\uuuu.$variables['node']->type;
    }
    }
    
    别忘了在这里更改您的主题名


    Drupal代码主题建议没有节点类型模板建议。因此,必须在template.php中添加一个主题建议函数(请参见上面的链接):)如果不是基本页面,则需要覆盖特定的节点模板文件。如果覆盖整个节点,则无需在template.php中执行建议
    function <strong>YOUR_THEME_NAME_HERE</strong>_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;
      }
    }