2017-09-20

猎数博客

数据挖掘,机器学习

drupal 6源码阅读(3)

作者:江航 / 2011-06-20 / (阅读 1,407 次) /



第二个函数是 menu_execute_active_handler

根据menu.inc中的注释,这个函数是调用当前path相关的回调函数。看起来回调函数注册可以基于path。该函数有一个返回值,后面的显示函数会根据这个返回值来决定做什么。

暂时不深究这个函数,先看下面的显示函数theme(‘page’, $return);这个函数有点长,而且不是很好理解,读得有点郁闷。硬着头皮往下读,感觉这个函数基本上没有做什么实际的事情,函数参数page被赋值给hook。接着初始化主题,从主题拿到一个注册的hooks。这里传进来的hook名字必须在hooks中有定义过,不然就直接退出了。

如果Hook名字有在hooks中定义过,则取$hooks[$hook]为$info.

这个$info中包含了有主题的路径,include files,files等信息。该函数根据这些信息将include files和files全部引入。

如果$info[function]有定义,那么就直接调用这个函数,返回这个函数的返回值。在这种情况下,主题就只是一个简单的函数调用。

否则主题就是一个模板。在这种情况下,如果$info[‘preprocess functions’]有定义,则逐一调用这些函数,其中函数的参数在$info[‘arguments’]中指定。如果$info[‘template’]有定义,则将这个文件作为主题模板,最后调用函数theme_render_template(template_file,$variables),其中的variables为$info[‘arguments’]中的参数,template_file为前面找到的template。注意这里把确定tempalte的方法简化了,实际的代码中,$info[‘template’]作为最后的模板选择,如果有其他的模板定义,会以其他的模板定义为准。

这个函数(theme_render_template)之后,最后调用一下$output = drupal_final_markup($output); ,姑且把这个理解为后处理。估计是提供一些接口来对生成的代码做最后的修改。比如加链接,加版权,加广告之类的。

至此,整个框架结束了。当然只是很粗略的看了一遍,其中接下来要看的就是一个具体的例子,看看其中的theme_rander_template到底干了些什么,是怎么处理各类node的。



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






相关文章

  • drupal hook_menu和添加一个新页面( 2,883 )
  • 用debug_backtrace来打印drupal中theme函数的调用堆栈( 2,233 )
  • drupal源码阅读方法( 2,146 )
  • drupal 6.20 安装时register_globals问题( 2,037 )
  • drupal6中theme处理流程小结( 1,888 )
  • 怎样清除drupal cache( 1,883 )
  • drupal6中的theme函数及主题结构( 1,839 )
  • 继续看theme之page( 1,818 )
  • drupal 6源码阅读(2)( 1,797 )
  • drupal 6源码阅读(1)( 1,791 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net