drupal6中theme处理流程小结

至此,经过前面一些列的文章,对theme的整个调用过程基本上有所了解,这里做一下小结。

每个module中可以定义module_theme函数,这个函数定义theme函数的hook。也即,如果你在module_theme中定义了
‘page’ => array(
‘arguments’ => array(‘content’ => NULL, ‘show_blocks’ => TRUE, ‘show_messages’ => TRUE),
‘template’ => ‘mypage’,
),

也就是说你定义了一个theme page的模板,mypage.tpl.php,可以通过这种方式来让drupal知道。
drupal在初始化theme的过程中,会调用这个函数建立theme的page hook,当theme(‘page’,$value) 被调用的时候,就会来调用这个模板。那么在mypage.tpl.php模板中可以调用哪些变量呢?

因为这个page模板被调用之前,会调用template_preprocess, template_preprocess_page,你可以在这两个函数种查看有那些变量可以被引用。只要是$variable中的变量均可引用。比如说$variables[header]=”testpage” , 那么你在模板中可以直接引用$header, 它的内容就是”testpage”. 另外,如果你想要修改或者添加$variable中的值,你可以在你的模块中定义一个module_preprocess, 或者是module_preprocess_page 来修改和添加这个$variable,然后你就可以在你的模板中引用这些变量。

另外,如果你想要改变某个theme的hook,你可以在你的模块中定义module_preprocess_hook , 这个函数定义以后,你就可以修改默认的显示方式了。

关于默认的模板处理方式,这些默认的hook都定义在common.inc的drupal_common_theme函数中。还有一些定义在system_theme中。这个会被最先调用,然后在调用其他模块的_theme函数,如果后面有重新定义这些hook,默认的定义就会被覆盖。

hook定义以后,每次调用前,会先调用tempalte_preprocess, tempalte_preprocess_hook, module_preprocess_hook. 这些调用完以后,就开始调用模板了。对于非模板的情况,还没有去仔细研究,待日后在谈。



本文地址: http://www.bagualu.net/wordpress/archives/1728 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注