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



我想覆盖特定内容类型的page.tpl.php。我已经尝试过这些东西,但对我来说没有任何效果。

  1. page--article.tpl.php
  2. page--node--article.tpl.php
  3. page--node--type--article.tpl.php
  4. page--node-type--article.tpl.php
  5. page--type--article.tpl.php

但是当我按数字定位特定节点时,即 page--node--8.tpl.php它工作正常。我认为page--article.tpl.php应该有效,但我不知道为什么它不起作用。

如果我命名错误,请告诉我。 以及如何调试这些东西。我听说我可以使用 Devel 模块,但对此一无所知。对正确方向的轻微提示将不胜感激。

提前致谢

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

http://drupal.org/node/1089656#comment-4426790

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
  }
}
?>

您是否记得清除缓存(在管理>站点配置>性能下),以便Drupal"知道"您的新文件并使用它而不是默认值。

请参阅此处清除缓存数据

此外,您可能需要添加一个预处理钩子(我自己没有使用过 D7,只有 5/6 — 认为这略有变化。这篇关于Drupal Stack Exchange的文章似乎提供了更多细节

我刚刚遇到了同样的问题。

node--recipe.tpl.php

页面--食谱.tpl.php

当然,这是使用称为"食谱"的内容类型。

始终清除缓存...

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

否则你几乎是对的

    page--
  1. content-type-name.tpl.php

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

我知道

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

node--contenttype.tpl

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

http://api.drupal.org/node/19080

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

您的文章模板将是:

node--article.tpl.php

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

因此,根据您要完成的任务,可能会有一些CSS技巧可以帮助您。

例如,要覆盖特定节点类型的任何CSS规则,请记住该节点类型的页面将具有"node-type-[TYPE]"的正文类(即:.node-type-article

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

body.node-type-article #selector {}

步骤 1.创建内容类型,例如:我的内容类型是"全角页面"

步骤2.复制page.tpl.php并在模板文件夹中重命名为page--fullwidthpage.tpl

第 3 步。将此代码添加到模板.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;
  }
}

不要忘记更改YOUR_THEME_NAME_HERE

最新更新