drupal页面加载的流程----跟着函数追本溯源

看了很多天drupal的源文件了,或多或少的明白了一些drupal的工作流程。今天就选择一个页面介绍一下drupal页面加载的流程,整个流程是依靠drupal的源文件中函数调用的过程的。
以加载http://localhost/drupal-6.22/admin/help(我的网站文件夹名:drupal-6.22)这个页面为例:
1:我们输入url在浏览器的地址栏,然后drupal就开始调用index.php这个文件。


2:index.php中以下两句代码就是为完全运行drupal做准备工作,把数据库,语言,包含include文件夹中的函数等(详情查看http://www.akon405.com/en/node/200)。
require_once './includes/install.inc';
define('MAINTENANCE_MODE', 'install');


3:index.php中第三句为$return = menu_execute_active_handler();这句话的作用就是通过url,调用数据库中的相关函数,并且把相关的inc文件加载到 drupal系统中。这句话就是drupal文件加载的核心了,这里我们需要打开的路径是http://localhost/drupal-6.22 /admin/help,所以我可以在数据库的menu_router表中得到此页面包含了help.admin.inc文件并且调用的函数为 help_main()。


4:跟随函数的脚步前进,进入drupal调用的help_main函数中进行分析(这个函数在help.admin.inc文件中),这个函数的源代码为:(我们在打开的页面中可以看到一些文字描述和一个模块列表,这里我们看函数是如何实现的)
function help_main() {
// Add CSS
drupal_add_css(drupal_get_path('module', 'help') .'/help.css', 'module', 'all', FALSE);
$output = ''. t('Help topics') .''. t('Help is available on the following items:') .''. help_links_as_list();
return $output;
}


5:这里面有一个help_links_as_list()函数,然后我们再一次追随函数。在这个函数中我们看到了如下定义:
function help_links_as_list() {
$empty_arg = drupal_help_arg();
$module_info = module_rebuild_cache();


$modules = array();
foreach (module_implements('help', TRUE) as $module) {
if (module_invoke($module, 'help', "admin/help#$module", $empty_arg)) {
$modules[$module] = $module_info[$module]->info['name'];
}
}
asort($modules);


// Output pretty four-column list
$count = count($modules);
$break = ceil($count / 4);
$output = '


    ';
    $i = 0;
    foreach ($modules as $module => $name) {
    $output .= '
    '. l($name, 'admin/help/'. $module) .'


    ';
    if (($i + 1) % $break == 0 && ($i + 1) != $count) {
    $output .= '


';
}
$i++;
}
$output .= '


';


return $output;
}
这个函数的作用就是得到包含hook_help这个钩子函数的模块的列表并且调用了hook_help函数。


6:至此,你就可以知道页面生成的大体流程了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值