如何覆盖首页节点tpl - drupal

时间:2012-09-04 17:34:46

标签: drupal drupal-7

如何覆盖drupal首页node.tpl文件?我尝试了各种各样的

   node--front.tpl.php
   page--node--front.tpl.php
   page--front--node.tpl.php

但它不起作用。

覆盖主页节点的文件名是什么? (我在drupal 7工作)

6 个答案:

答案 0 :(得分:9)

您可以将此功能添加到主题template.php

   function customethemename_preprocess_node ( &$vars ) {

        if ($vars["is_front"]) {
           $vars["theme_hook_suggestions"][] = "node__front";
        }  
    }

然后你可以翻页 - front.tpl.php

它将解决问题

答案 1 :(得分:6)

应为page--front.tpl.php

此外,请确保您的主题的层次结构中有前体(例如page.tpl.php

答案 2 :(得分:1)

我建议通过将特定内容节点设置为首页来解决此问题。

http://www.inmotionhosting.com/support/edu/drupal-7/homepage/change-front-page

然后我会使用特定的节点ID模板。

node--[insert id here].tpl.php,即node--1.tpl.php

在此之前你需要做两件事:

  1. 确保您的主题文件夹中包含原始node.tpl.php文件的副本(否则将不会拾取被覆盖的模板文件)。
  2. 清除Drupal的缓存

答案 3 :(得分:0)

无需手动开发首页,只需按视图或其他方式创建首页,并将其设置为首页:

www.yoursite.com/?q=admin/config/site-information

答案 4 :(得分:0)

以下步骤解决了我在Drupal 7中创建自定义首页的问题。

  1. 创建文件:page - front.tpl.php。注意两个连字符而不是 一。
  2. 清除缓存:配置>>开发>>性能和GT;> 清除所有缓存

答案 5 :(得分:0)

我认为最好的解决方案是使用首页nid

function YOURTHEME_preprocess_node ( &$vars ) {
list(, $frontpage_nid) = explode('/', drupal_get_normal_path(variable_get('site_frontpage', 'node')));

  if ($vars['node']->nid == $frontpage_nid) {
    $vars['theme_hook_suggestions'][] = "node__frontpage";
  } 
}

因为

if ($vars["is_front"]) {
    $vars["theme_hook_suggestions"][] = "node__front";
}

为首页中的所有节点添加主题建议,而不仅仅是对于首页节点