在Drupal 7中为不同的年龄组创建多个page.tpl

时间:2011-11-15 10:10:05

标签: php drupal drupal-theming

我目前在Drupal中建立的网站分为两个非常不同的区域,两者的结构完全不同。我的解决方案是构建两个不同的page.tpl页面。有谁知道在Drupal 7中实现这个最简单的方法是什么。它是一个命名约定过程,如node.tpl页面,还是我需要在template.php页面中插入一个预处理函数。

为任何帮助干杯!

5 个答案:

答案 0 :(得分:3)

您还可以在template.php文件中附加预处理功能。如下所示:

function yourthemename_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;  
    }  
}

答案 1 :(得分:1)

查看此页面:http://drupal.org/node/1089656

它解释了模板文件的命名方案以及如何扩展模板建议。

在您的情况下,您必须实施theme_get_suggestions()功能。在此函数中,您可以检查路径参数以确定需要显示哪种页面并添加适当的建议。

答案 2 :(得分:0)

我不明白。如果您想使用两个不同的模板文件,那么只需创建两种不同的内容类型,您就可以通过所有这些编码。

如果您需要进一步的帮助,请与我们联系。 维沙尔

答案 3 :(得分:0)

您可以使用Context模块。

在给定的上下文中,您可以添加“模板建议”反应。这将允许您指定将覆盖默认值的其他模板文件。有关详细信息,请参阅上下文队列Add a "Template suggestions" reaction中的问题。

使用这种方法,没有必要编写任何模块代码。

答案 4 :(得分:0)

function your_theme_preprocess_node(&$variables) {
  // Add specific templates.
  foreach ($variables['theme_hook_suggestions'] as $theme_suggestion) {
    $variables['theme_hook_suggestions'][] = $theme_suggestion . '__' . $node->view_mode;
  }
}

如果添加此代码,也可以在此处调用预处理功能

  // Run specific preprocess function.
  $preprocess = 'your_theme_preprocess_node_' . $node->type . '__' . $node->view_mode;
  if (function_exists($preprocess)) {
    $preprocess($variables);
  }

在这种情况下,您不仅可以为节点类型使用不同的模板,还可以使用不同的视图模式