【问题标题】:Drupal: page specific theming without node-idDrupal:没有节点ID的页面特定主题
【发布时间】:2017-08-27 21:30:11
【问题描述】:

我正在添加一个带有节点 ID 的页面,之前我使用“page--node--node-id.tpl.php”模板来自定义节点/页面。但是,我不小心删除了该节点,现在我无法使用特定的 nid 节点创建该节点。我想知道如何将特定页面自定义为每个页面的唯一标题。

【问题讨论】:

  • 您可以创建新节点,并直接在数据库中更改它的nid。使用 PhpMyAdmin 或类似工具。不是最干净的解决方案,但如果您知道之前使用过什么 nid(并且您知道,因为模板是由它命名的),那么它是非常安全的。检查“节点”表。
  • 甚至更简单。只需创建新节点,查看它的 nid 并重命名模板,以便新的 nid 将替换旧的。不要忘记清除缓存!

标签: drupal drupal-7 drupal-modules


【解决方案1】:

对所有节点使用 page--node.tpl.php 而不是每个模板,否则使用 node--[node-type].tpl.php 用于特定节点内容类型模板

通过以下代码创建具有您自己的特定名称的内容类型模板还有另一个明智的步骤

function themeName_preprocess_page(&$vars, $hook) {

if (isset($vars['node'])) {

$vars['theme_hook_suggestions'][] = 'page__'。 str_replace('_', '--', $vars['node']->type);

}

}

在上述情况下,如果节点内容类型是“文章”,那么模板建议将是“页面--article.tpl.php”。

【讨论】:

    【解决方案2】:

    在你的主题目录中创建模板文件页面--nodetype.tpl.php。

    【讨论】:

    • 感谢 cmets。我想最安全的方法是创建一个新的内容类型并添加模板“page--content-type.tpl.php”。当您将项目从本地设置部署到实时设置时,这很容易。拥有特定于节点的模板页面的缺点是,如果您错误地删除了该节点,那么 drupal 将不允许您创建具有特定 nid 的新节点(这非常可悲,我不知道为什么 drupal 不允许它通过编程命令)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多