0

我创建了自己的主题。在 template.php 文件中,我有以下代码:

function mytheme_preprocess_page(&$variables) {
    if(isset($variables['node'])){
        if($variables['node']->type === 'sports'){
            $variables['theme_hook_suggestions'][] = 'page__node__sports';
        }
    }
}

而且我的主题模板目录中有一个page_node_sports.tpl.php文件,并且我已经清除了缓存。但是,没有使用 page_node_sports.tpl.php 模板在进行一些调试时,我在 preprocess_page 函数的开头添加了一条 echo 语句,它确实出现在屏幕上,所以我知道该函数正在运行。但是模板建议不起作用。我什至删除了函数内的 if 语句,只留下 $variables['theme_hook_suggestions'] = ... 行,但仍然没有。

知道出了什么问题吗?

4

2 回答 2

2

您是否还在主题文件夹中添加了 page.tpl.php?仅当原始模板也存在时,建议才有效。

另请参阅http://adaptivethemes.com/page-template-suggestions-per-node-type

于 2011-04-20T14:20:33.437 回答
1

弄清楚了。虽然该行中的模板名称:

$variables['theme_hook_suggestions'][] = 'page__node__sports';

应该有下划线,实际的 .tpl.php 文件应该有连字符。

于 2011-04-20T14:44:08.007 回答