Drupal主题在模块中运行工作流程

时间:2009-08-25 14:42:11

标签: drupal content-management-system themes

我是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

1 个答案:

答案 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