当你在菜单钩子中添加一个菜单项时,经常用到的一个键就是type。如果你没有定义类型,那么将会使用默认类型MENU_NORMAL_ITEM。Drupal将根据你指定的类型来对菜单项进行不同的处理。每一个菜单项类型都有一系列的标记或者属性组成。表4-2列出了菜单项类型的标记。
表 4-2. 菜单项类型标记
000000000001 0x0001 1 MENU_IS_ROOT
000000000010 0x0002 2 MENU_VISIBLE_IN_TREE
000000000100 0x0004 4 MENU_VISIBLE_IN_BREADCRUMB
000000001000 0x0008 8 MENU_LINKS_TO_PARENT
000000100000 0x0020 32 MENU_MODIFIED_BY_ADMIN
000001000000 0x0040 64 MENU_CREATED_BY_ADMIN
000010000000 0x0080 128 MENU_IS_LOCAL_TASK
例如,常量MENU_NORMAL_ITEM拥有标记MENU_VISIBLE_IN_TREE和MENU_VISIBLE_IN_BREADCRUMB,如表4-3所示。看一下不同的标记在单个常量中是如何表示的,你看出来了吗?
表4-3.菜单项类型MENU_NORMAL_ITEM的标记
000000000010 MENU_VISIBLE_IN_TREE
000000000100 MENU_VISIBLE_IN_BREADCRUMB
000000000110 MENU_NORMAL_ITEM
因此,MENU_NORMAL_ITEM拥有下列标记:000000000110。表4-4展示了可用的菜单项类型和它们所表示的标记
表 4-4. 菜单项类型表示的标记
MENU_ MENU_ MENU_ MENU_
NORMAL_ MENU_ SUGGESTED_ LOCAL_ DEFAULT_
ITEM CALLBACK ITEM* TASK LOCAL_TASK
MENU_IS_ROOT
MENU_VISIBLE_IN_TREE X
MENU_VISIBLE_IN_BREADCRUMB X X X
MENU_LINKS_TO_PARENT X
MENU_MODIFIED_BY_ADMIN
MENU_CREATED_BY_ADMIN
*这个常量是由位逻辑运算符OR和0x0010创建的
当你定义自己的菜单项类型时,应该使用哪一个常量呢?查看表4-4,在里面看一下你想启用哪些标记,然后使用包含这些标记的常量。对于每个常量的详细描述,参看includes/menu.inc里面的注释。最常用的为MENU_CALLBACK, MENU_LOCAL_TASK, 和 MENU_DEFAULT_LOCAL_TASK。更多详细,请仔细阅读里面的注释。