我目前在Drupal中建立的网站分为两个非常不同的区域,两者的结构完全不同。我的解决方案是构建两个不同的page.tpl页面。有谁知道在Drupal 7中实现这个最简单的方法是什么。它是一个命名约定过程,如node.tpl页面,还是我需要在template.php页面中插入一个预处理函数。
为任何帮助干杯!
答案 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);
}
在这种情况下,您不仅可以为节点类型使用不同的模板,还可以使用不同的视图模式