6

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

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

但它不工作。

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

4

6 回答 6

9

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

   function customethemename_preprocess_node ( &$vars ) {

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

然后就可以page page--front.tpl.php

它会解决问题

于 2012-09-04T18:29:08.653 回答
6

它应该是page--front.tpl.php

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

于 2012-09-05T19:51:49.953 回答
1

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

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

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

node--[insert id here].tpl.php IEnode--1.tpl.php

在此之前,您需要做两件事:

  1. 确保您的主题文件夹中有原始 node.tpl.php 文件的副本(否则将不会拾取被覆盖的模板文件)。
  2. 清除 Drupal 的缓存
于 2012-09-05T01:08:17.120 回答
0

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

www.yoursite.com/?q=admin/config/site-information
于 2012-09-05T13:02:40.493 回答
0

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

  1. 创建一个文件:page--front.tpl.php。注意两个连字符而不是一个。
  2. 清除缓存:配置>>开发>>性能>>清除所有缓存
于 2014-10-11T10:13:43.267 回答
0

我认为最好的解决方案是使用frontpage 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";
}

为frontpage中的所有节点添加主题建议,而不仅仅是frontpage节点

于 2015-05-21T15:36:15.810 回答