Drupal的学习总结

最近加大力气研究了下drupal,发现的确是个非常强大的系统,代码结构十分复杂,目前的学习内容如下:

menu钩子

  1. drupal中的url路径必须通过api进行定义,有几种方法:1.直接通过api定义 2.在 *.module文件中的 {modulename}_menu函数中定义
  2. 其实drupal的所有url参数除了业务参数外,其他的路径全部在系统设置时已经完全定义完成,比如:?q=admin/build/themes 就是定义了一个 admin/build/themes 这样的名字的路径,同时有一个对应的回调函数,每次遇到这个路径则调用此函数处理。当然这样的路径也支持通配符。
  3. 目前来讲我只知道在module中能定义 *_menu钩子,在主题中发现不行 主题系统

  4. 在系统选择主题时,会将主题系统的设置进行处理并缓存,1.按照模块去生成主题信息缓存,比如node.tpl.php第一个选择是node模块的,2.根据主题引擎对主题信息进行补充 3.根据自定义主题对主题信息进行缓存。

  5. 在主题系统中可以通过 phptemplate_preprocess_node 函数,增加新的模板文件选择。比如: function phptemplate_preprocess_node(&$vars) { if (drupal_is_front_page()) { $vars['template_files'][] = 'node-front'; } } 算是重新定义了一个node模板。
  6. 子主题继承基主题的内容,但是必须自定一个css文件,如2一样要增加模板选择则必须在此主题下有父模板(node.tpl.php)的存在(因为这个问题,让我调试了1整天程序),如果没有node.tpl.php,则系统直接向基主题寻找node的模板,而忽略了子主题定义的新模板(这里我认为是系统的一个问题,也许遇到问题时我们应该先去查看系统bug列表,也许里面有呢,只不过我的英文太烂,所以只能自己去测试,我不能保证是不是如此,但根据我的调试,认为确实如此)