2012-02-29 81 views
1

我在寫一個Drupal 7模塊。因此,我的實現hook_menu()的部分是這樣的:Drupal 7:如何隱藏鏈接到輔助選項卡?

$items['admin/mymodule/a'] = array(
    'title' => 'A', 
    'page callback' => 'mymodule_a', 
    'access arguments' => array('administer mymodule'), 
    'type' => MENU_LOCAL_TASK, 
    'weight' => 2, 
); 
$items['admin/mymodule/a/%id/edit'] = array(
    'title' => 'Edit', 
    'page callback' => 'mymodule_edit', 
    'access arguments' => array('administer mymodule'), 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
    'weight' => 1, 
); 
$items['admin/mymodule/a/%id/details'] = array(
    'title' => 'Details', 
    'page callback' => 'mymodule_details', 
    'access arguments' => array('administer mymodule'), 
    'type' => MENU_LOCAL_TASK, 
    'weight' => 2, 
); 

現在我想要做到的,是隱藏來自名爲「A」到次級標籤,仍然有這樣的之間的鏈接頁面鏈接輔助選項卡,即訪問admin/mymodule/a時,不應該鏈接到顯示的輔助選項卡,而對於admin/mymodule/a/42/edit應該有鏈接添加到.../42 /編輯.../42 /詳細信息頁面。 我想這應該很容易實現,但我無法弄清楚如何...感謝您的建議!

回答

0

我是新來的Drupal自己,但我認爲你可以使用以下鉤子:

hook_menu_alter(&$items) 
// http://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu_alter/7 

改變的最後2頁的「類型」,以MENU_CALLBACK(然後將隱藏的標籤這些網頁)

EDIT(讀您的回覆後):

$items['pages/render-array'] = array(
    'title' => 'Render array', 
    'description' => 'Menu system example using a render array.', 
    'page callback' => 'pages_render_array', 
    'access arguments' => array('access content'), 
    'weight' => 2, 
    'type' => MENU_LOCAL_TASK, 
); 
    $items['pages/render-array/tab1'] = array(
    'type' => MENU_DEFAULT_LOCAL_TASK, 
    'title' => 'Tab 1', 
); 
    $items['pages/render-array/tab2'] = array(
    'title' => 'Tab 2', 
    'description' => 'Demonstrating secondary tabs.', 
    'page callback' => 'pages_render_array', 
    'access callback' => TRUE, 
    'type' => MENU_LOCAL_TASK, 
); 

這與2子選項卡的頁面代碼, 我想你能夠把條件對「鉤_menu_alter'(=當在頁面'A')改變其他2頁(或類似的..?)

真的很抱歉,如果這也沒有幫助,只是試圖頭腦風暴overhere:D(第一週的Drupal)

+0

感謝您的回覆,但那不會解決問題。我也可以首先將最後兩頁的類型改爲MENU_CALLBACK,但訪問這些頁面時,它們應該顯示爲子選項卡。 – user1240945 2012-02-29 19:06:24