我是Drupal主题的新手,我无法在论坛模块主题中获得一个细节。
forum.module文件包含控制此模块主题的forum_theme函数 并有这一行
function forum_theme() {
......
'forum_list' => array(
'template' => 'forum-list',
'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
),
我也在论坛目录中看到forum-list.tpl.php
文件,所以我开始怀疑这个文件何时被调用以及从哪里获取数据,但我在forum.module中找到的就是这个函数。
function template_preprocess_forum_list(&$variables)
我错过了什么吗?所以一般来说我的问题是谁和何时调用自定义注册的主题函数,比如forum_list
答案 0 :(得分:0)
简单的答案是,如果您在主题目录中放置mytheme-forum-list.tpl.php(其中mytheme是您的主题的名称)并自定义它,drupal应该选择它(首先清除缓存)。
template_preprocess_forum中的这一行调用Drupal主题函数
$variables['forums'] = theme('forum_list',
$variables['forums'],
$variables['parents'],
$variables['tid']);
这将引用forum_theme()
中的行 'forum_list' => array(
'template' => 'forum-list',
'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
),
告诉模板试图查找forum-list.php并提供参数。
如果您安装devel module并启用主题开发人员模块。这将向您展示Drupal在呈现内容时将寻找的所有候选模板和函数。
一般情况下(但有特殊例外)Drupal会查找最佳匹配模板并回退到预定义的函数。
如果没有匹配的东西。请查看theme guide,并在具体的Overriding themable output部分中找到您感兴趣的hook_theme。