很简单的问题:
我在drupal 7网站中使用了page--front.tpl和page.tpl模板页面。但是,我想在另一页上使用page-front.tpl。这可能吗,或者我需要创建另一个.tpl页面来执行此操作。
我正在处理的网站分为两个部分,实际上是两个独立的网站,您可以在消费者或企业主之间切换。因此,我想将front.tpl模板用于每个站点的主页。
干杯。
最佳答案
您可以将theme_preprocess_page
函数添加到主题的template.php
文件,然后在模板建议列表中添加模板名称。
function mytheme_preprocess_page(&$vars) {
// you can perform different if statements
// if () {...
$template = 'page__front'; // you should replace dash sign with underscore
$vars['theme_hook_suggestions'][] = $template;
// }
}
编辑
如果要通过路径别名指定模板名称,则可以编写如下代码:
function phptemplate_preprocess_page(&$variables) {
if (module_exists('path')) {
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
$template = 'page_';
foreach (explode('/', $alias) as $part) {
$template.= "_{$part}";
$variables['theme_hook_suggestions'][] = $template;
}
}
}
}
如果没有此功能,则默认情况下您将具有以下节点模板建议:
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
)
并且此功能将适用于您的节点的以下新模板建议。
具有
node/1
路径和page/about
别名的示例节点:array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
)
因此,之后您可以为页面使用
page--page-about.tpl.php
。如果您想将
page--front.tpl.php
应用于node/15
,则可以在此函数中添加if语句。function phptemplate_preprocess_page(&$variables) {
if (module_exists('path')) {
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
$template = 'page_';
foreach (explode('/', $alias) as $part) {
$template.= "_{$part}";
$variables['theme_hook_suggestions'][] = $template;
}
}
}
if ($_GET['q'] == 'node/15') {
$variables['theme_hook_suggestions'][] = 'page__front';
}
}
这将为您提供以下模板建议:
array(
[0] => page__node
[1] => page__node__%
[2] => page__node__1
[3] => page__page
[4] => page__page_about
[5] => page__front
)
最高索引-最高模板优先级。
关于templates - 在Drupal 7中将front.tpl用于另一个页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8268003/