这是我正在使用的基本菜单结构:
function events_menu()
{
$items = array();
$items['events'] = array(
'title' => 'Current Events',
'access callback' => true,
'page callback' => 'page_event',
'type' => MENU_CALLBACK,
);
$items['events/current'] = array(
'access callback' => true,
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 1,
);
$items['events/regions'] = array(
'title' => 'Event By Region',
'access callback' => true,
'type' => MENU_LOCAL_TASK,
'weight' => 2,
);
$items['events/range/%/to/%'] = array(
'title' => 'Current Events by Range',
'access callback' => true,
'page callback' => 'page_event_range',
'page arguments' => array(2, 4),
'type' => MENU_LOCAL_TASK,
/* Don't want this to be a tab.
I want it to activate the default tab */
);
return $items;
}
URL(和默认选项卡)events
显示一些数据。我希望 URLevents/range/%/to/%
根据传递的 URL 参数过滤数据。
上面的 hook_menu 有效,但我不想events/range/%/to/%
成为它自己的选项卡。当您使用过滤后的 URL 时,我希望默认选项卡 Current Events 保持活动状态 - 给人一种您正在查看与 相同的页面的错觉events
,只是过滤了。多个 URL 可以指向同一个选项卡吗?
arg()
我想我可以在页面回调中手动处理 url 参数events
,但这似乎很棘手。没有办法使用 hook_menu 做到这一点吗?
编辑(说明更清楚):
通常在 URLevents
和events/regions
. 我想要一个隐藏的(仅限回调)网址events/range/%/to/%
。但是当您访问它时,我希望这两个选项卡保持可见并且当前事件处于活动状态 - 就好像我们从未离开过该页面一样。