刚开始学习cms的总感觉,摸不着门路,不知道代码是怎么调用的,只要找到一个缺口,慢慢的深入,时间长了就能得心应手了。下面就一个手册的例子在来说一下,一次请求是怎么调用drupal代码的。
1,创建sites/all/modules/menufun这样的目录
2,在目录下面建二个文件
menufun.info
; $Id$ name = Menu Fun //模块名称,在后台添加模块的时候会看到 description = Learning about the menu system. //模块描述 package = Pro Drupal Development core = 6.x
menufun.module
function menufun_menu() { //定义菜单 $items['menufun'] = array( //menufun是主菜单 'title' => 'Greeting', //菜单名 'page callback' => 'menufun_hello', //要调用的回调函数 'page arguments' => array('Jane', 'Doe'), //传给回调函数的参数 'access callback' => TRUE, //访问控制 'weight' => -10, ); $items['menufun/farewell'] = array( //子菜单farewell 'title' => 'goodbey', //子菜单名 'page callback' => 'menufun_farewell', //子菜单要调用的回调函数 'access callback' => TRUE, //访问控制 'weight' => 1, ); return $items; } function menufun_hello($first_name = '', $last_name = '') { //供菜单menufun_menu调用 return t('Hello @first_name @last_name', array('@first_name' => $first_name, '@last_name' => $last_name)); } function menufun_farewell($first_name = '', $last_name = '') { //供子菜单farewell调用 return t('goodbay'); }
到这儿一个菜单就做好了,准备工作也做好了。
3,菜单要在后台启用的,administer=>site building=>modules
选中保存这个菜单就启用了,用户自己添加的菜单数据保存在menu_links,menu_router表中,添加好后,你可以在这二个表中看一下,了解一下菜单的存储。
4,调用说明
当我们点击左边的Greeting时,
url是http://localhost/drupal/?q=menufun,它调用的是/sites/all/modules/menufun.module下的function menufun_menu(){},menufun_menu会调用'page callback'=>后面设定的函数,将结果显示出来,这样一次简单的请求结束了。
如果url是http://localhost/drupal/?q=node/add,它调用的是modules/node/node.module下的function node_menu(){},你可以从这个方法中找到$items['node/add']
上面二个有一点不同,menufun是用户自建的module,而node是drupal自带的module
后台的url调用都是先从菜单开始的,既然知道这次请求调用了什么函数,这就好办了,这个函数就是我们的突破口。
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/drupal/1180.html