drupal 学习经验(一次页面请求)

张映 发表于 2010-12-21

分类目录: drupal

标签:,

刚开始学习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

drupal menu

drupal menu

选中保存这个菜单就启用了,用户自己添加的菜单数据保存在menu_links,menu_router表中,添加好后,你可以在这二个表中看一下,了解一下菜单的存储。

4,调用说明

drupal menu2

drupal menu2

当我们点击左边的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