2011-11-04 165 views
2

我想找到一種方式爲我的模塊,安裝後,創建一個錨鏈接。Drupal的鉤子創建模塊菜單

我目前的策略是創建一個自定義菜單,類似於主菜單,輔助菜單等。 在此菜單中,我想要一個或多個由我的模塊定義的鏈接。然後,我希望我的自定義菜單會自動有一個塊,用戶可以放置在任何他們想要的位置。

當我的模塊沒有安裝,我想菜單,它的鏈接被刪除。

任何人都可以請給我一些指針來完成這個?

+0

@siski,我只是通過我的舊回答來回答未解答的問題,並想知道你是否已經解決了這個問題?如果沒有,讓我知道,這樣我可以進一步提高我的答案/幫助。 –

回答

11

http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_menu/7

/** 
* Implement hook_menu() 
*/ 
function <module>_menu() { 

    $items = array(); 
    $items['admin/<path>'] = array(
    'title' => '<Link title>', 
    'description' => '<Link description>', 
    'page callback' => '<function from your module>', 
    'access arguments' => array('access administration pages'), 
    'type' => MENU_NORMAL_ITEM, 
    'weight' => 15, 
    'menu_name' => 'primary-links' 
); 
    return $items; 
} 

「MENU_NAME」就會把鏈接在相關菜單

更新:要創建菜單首先你必須使用hook_installhook_enable這將在第一次安裝運行的操作,或分別啓用。

/** 
* Implement hook_install() 
*/ 
function <module>_install() { 
    $menu = array(
     'menu_name' => 'test-menu', 
     'title' => 'Test menu', 
     'description' => 'A test menu' 
    ); 

    menu_save($menu); 
    cache_clear_all('*', 'cache_menu', TRUE); 

    drupal_set_message($message = t('The module was successfully installed. '), $type = 'status'); 
} 

上述代碼將創建一個菜單。

注意:要運行hook_install(),必須先禁用然後在重新啓用之前卸載模塊。每次使用hook_enable()來運行它。

然後,您可以使用上面的hook_menu()描述以編程方式將項目添加到該菜單。兩個數組中的menu_name必須明顯匹配。

在閱讀您的評論並發現您需要創建菜單而不是添加到現有菜單中時,建議在hook_install()調用中使用menu_link_save()而不是menu_link_save()

請注意,您還需要使用hook_disable()hook_uninstall()才能刪除菜單鏈接。

+0

什麼是downvote? –

+0

謝謝,我會盡快嘗試你的方法。而投票並非來自我:-) – sisko

+0

這是很好的答案,我投了 – corbacho