非常直接的问题:
我在一个Drupal7站点中使用了page--front.tpl和page.tpl模板页面。但是,我想在另一个页面上使用page-front.tpl t.tpl。这是否可能,或者我是否需要创建另一个.tpl页面来完成此操作。
我正在工作的网站分为两个部分,它本质上是两个独立的网站,你可以在你的消费者或企业所有者之间切换。所以我想为每个站点的主页使用front.tpl模板。
干杯。
发布于 2011-11-25 19:35:58
您可以在主题的template.php文件中添加theme_preprocess_page函数,然后在模板建议列表中添加模板名称。
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。
如果你想对你的node/15应用page--front.tpl.php,那么在这个函数中,你可以添加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
)最高的索引-最高的模板优先级。
https://stackoverflow.com/questions/8268003
复制相似问题