到目前为止,我们在菜单项中所用的都是普通的Drupal路径名字,比如menufun 和menufun/farewell。但是Drupal还经常使用这样的路径,比如user/4/track或node/15/edit,在这些路径中,有一部分是动态的。现在,让我们来看看动态路径是如何工作的。
基本通配符
%字符在Drupal菜单项中是一个特殊的字符。它意味着“从这到下一个/字符之间的字符串”。下面是一个使用了通配符的菜单项:
function menufun_menu() {
$items['menufun/%'] = array(
'title' => 'Hi',
'page callback' => 'menufun_hello',
'access callback' => TRUE,
);
return $items;
}
这个菜单项适用于的Drupal路径可以有menufun/hi, menufun/foo/bar, menufun/
123, 和menufun/file.html。但是它不适用于路径menufun;对于后者,因为它只包含了一个部分,而menufun/%只匹配具有两部分的字符串,所以你需要为其单独创建一个菜单项。注意,尽管%通常是用来指定一个数字的(比如,user/%/edit用于user/2375/edit),但是它能匹配该位置上的任何文本。
注意 在路经中带有通配符的菜单项,即便是将菜单项的类型设置为MENU_NORMAL_ITEM,它也不会显示在导航菜单中。原因很明显:由于路径中包含了一个通配符,所以Drupal不知道如何为该路径构建URL。这是一般情况下的规律,也有例外的情况,因为你可以告诉Drupal使用什么URL,更多详细,可参看本章后面的“使用to_arg()函数为通配符构建路径”。
老葛的Drupal培训班 Think in Drupal
评论
勘误
function menufun_menu() {
$items['menufun/%'] = array(
'title' => 'Hi',
'page callback' => 'menufun_hello',
'access callback' => TRUE,
);
return $items;
}
function menufun_menu() {
$items['menufun/%'] = array(
'title' => 'Hi',
'page callback' => 'menufun_hello',
'page arguments' => array(1),
'access callback' => TRUE,
);
return $items;
}
为什么要加 参数 那一行呀??
为什么要加 参数 那一行呀??
自己动手做一下,看看没有的话会遇到什么问题,这样就知道参数
自己动手做一下,看看没有的话会遇到什么问题,这样就知道参数的含义了