我想覆盖特定内容类型的page.tpl.php。我已经尝试过这些东西,但对我来说没有任何效果。
-
page--article.tpl.php
-
page--node--article.tpl.php
-
page--node--type--article.tpl.php
-
page--node-type--article.tpl.php
-
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--
- 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