これが私が取り組んでいる基本的なメニュー構造です。
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
にはいくつかのデータが表示されます。events/range/%/to/%
渡された URL パラメーターに基づいてURL でデータをフィルター処理したいと思います。
events/range/%/to/%
上記の hook_menu は機能しますが、独自のタブにはしたくありません。フィルタリングされた URL を使用するときは、デフォルトのタブである [現在のイベント] をアクティブのままにして、フィルタリングされたものと同じページを見ているように見せたいと思いますevents
。複数の URL が同じタブを指すことはできますか?
arg()
ページのコールバックでURL パラメータを手動で処理できると思いevents
ますが、これはハックのようです。hook_menu を使用してこれを行う方法はありませんか?
編集 (より明確に記述):
通常、URLevents
とに [Current Events] と [Event By Region] の 2 つのタブがありますevents/regions
。に非表示 (コールバックのみ) の URL が必要events/range/%/to/%
です。しかし、あなたがそこにアクセスしたときに、2 つのタブが表示されたままになり、Current Events がアクティブになっていることを望みます。まるでそのページを離れたことがないかのように。