你在这里

Chapter 04: The Menu System

 Drupal的菜单系统复杂但是强大,术语“菜单系统”(menu system)有些取名不当,最好认为菜单系统有三个主要职责:回调映射、访问控制、菜单定制。菜单系统基本的代码在includes/menu.inc中,那些可选代码包含一些定制菜单时激活的特性则在modules/menu中。
在本章,我们将探索回调映射怎样工作,看看怎样生成带访问控制的菜单项、总结菜单项的不同内建类型。最后以练习如何去覆写、增加、删除存在的菜单项来结束本章,你就能尽可能无干扰地定制Drupal了。

回调映射

当一个web浏览器对Drupal发出一个请求,它给Drupal一个URL,从这个信息,Drupal可以算出什么代码要运行和怎样处理这个请求,这是通常都知道的路由和调度。Drupal修剪掉URL的基本部分,使用后面的部分,叫路径(path),例如,如果URL是http://example.com?q=node/3,Drupal路径是node/3。如果你是使用Drupal的cleanURL特性,在你的浏览器中,此URL就显示为http://example.com/node/3,但是你的web服务器在Drupal看到它之前悄悄重写URL到http://example.com?q=node/3,所以Drupal总是处理相同的Drupal路径,在前面的例子中,Drupal路径不论是否是CleanURL都是node/3,如何工作的更多细节请看第一章“The Web Server's Role”节。

映射URL到函数

通常的途径是这样:Drupal询问所有激活的模块去提供一个菜单项的数组,每个菜单项包含一个以一个路径为键及有关路径某些信息的数组,一个模块应提供的这一块信息是一个页面回调(page callback),在这个上下文中,一个回调简单点就是浏览器请求特定路径时应该调用的PHP函数的名字。一个请求到