2011-11-24 89 views
2

我想添加一個主頁>管理>配置頁面,然後用2個選項卡(create_team和create_game)打開一個新表單。drupal 7 hook_menu()不工作

我的代碼(不工作):

function guild_management_core_menu() 
{   
$items['admin/config/guild_management_core/create_game'] = array 
(
    'title' => 'Create Game', 
    'description' => 'Create Game', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('guild_management_core_create_game'), 
    'access arguments' => array('access administration pages'), 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
    'weight' => 0, 
);  
$items['admin/config/guild_management_core/create_team'] = array 
(
    'title' => 'Create Team', 
    'description' => 'Create Team', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('guild_management_core_create_team'), 
    'access arguments' => array('access administration pages'), 
    'type' => MENU_LOCAL_TASK, 
    'weight' => 0, 
); 

return $items; 

}

我想下面的鏈接,但他們沒有工作之一: drupal--hook_menu Drupal hook_menu from module for admin menu

我還禁用了模塊並再次啓用它,然後我清除了緩存但仍然沒有結果。

編輯: 這工作:

$items['admin/config/annotate'] = array(
    'title' => 'Guild Management', 
    'description' => 'Guild Management', 
    'position' => 'right', 
    'weight' => -5, 
    'page callback' => 'system_admin_menu_block_page', 
    'access arguments' => array('administer site configuration'), 
    'file' => 'system.admin.inc', 
    'file path' => drupal_get_path('module', 'system'), 
); 

當我取代 「管理/配置/註解」 與 「管理/配置/ guild_management_core」 時,進行再錯......

回答

4

修訂

這應該爲你工作:

function tbff_promo_menu() { 
    $items['admin/config/guild_management'] = array(
     'title' => 'Create Game', 
     'description' => 'Create Game.', 
     'position' => 'right', 
     'weight' => -20, 
     'page callback' => 'system_admin_menu_block_page', 
     'access arguments' => array('access administration pages'), 
     'file' => 'system.admin.inc', 
    ); 
    $items['admin/config/guild_management/core'] = array(
     'title' => 'Create Game', 
     'description' => 'Create Game', 
     'page callback' => 'drupal_get_form', 
     'page arguments' => array('search_block_form'), 
     'access arguments' => array('access administration pages'), 
     'type' => MENU_NORMAL_ITEM 
    ); 
    $items['admin/config/guild_management/core/create_game'] = array(
     'title' => 'Create Game', 
     'type' => MENU_DEFAULT_LOCAL_TASK, 
     'weight' => 0 
    ); 
    $items['admin/config/guild_management/core/create_team'] = array(
     'title' => 'Create Team', 
     'description' => 'Create Team', 
     'page callback' => 'drupal_get_form', 
     'page arguments' => array('search_block_form'), 
     'access arguments' => array('access administration pages'), 
     'type' => MENU_LOCAL_TASK, 
     'weight' => 0, 
    ); 
    return $items; 
} 
+0

這不是問題,OP期待鏈接顯示在'/ admin /它不會與你提供的代碼 – Clive

+0

@Clive - 首先$ item創建菜單正常項目,它顯示在管理塊中。第二個$ item將其定義爲默認本地任務,第三個$ item生成第二個選項卡。 –

+0

@ VladStraulat:我剛剛試過你的代碼,正如預期的那樣,塊和鏈接不會顯示在「admin/config」頁面上。 – Clive

3

對於本地任務工作路徑必須直接在父路徑下面。目前你有一個額外的級別,/content/,這將停止顯示標籤。

你的兩個本地任務的路徑應該是:

admin/config/guild_management_core/create_game 
admin/config/guild_management_core/create_team 

一旦你做出改變清楚Drupal的緩存,如果你還沒有得到快樂轉到模塊頁,禁用模塊,點擊「卸載「選項卡,然後實際卸載您的模塊。一旦你重新安裝它應該工作得很好。

UPDATE

我想我知道是什麼問題:你希望admin/config/guild_management_core下的鏈接顯示爲admin/config頁面上的鏈接塊...爲了做到這一點的第一個菜單項目的頁面回調需要是:

system_admin_menu_block_page()

如果不是的話,Drupal將不知道該把你的配置頁面的主要管理配置頁面上(這就是如何將所有的核心/貢獻的模塊做到這一點)。

我不確定你可以使用本地任務直接在你的主配置頁面下的鏈接,因爲我不確定在Drupal中是否有意義,但可以試試。

您可以看到如何在覈心system模塊中使用system_admin_menu_block_page的示例。

+0

仍然沒有成功。沒有錯誤消息,但也沒有顯示管理頁面上的鏈接。 – Napoleon

+0

你能直接進入「admin/config/guild_management_core/create_team」路徑嗎? – Clive

+0

是的,它顯示了一個包含2個表格「創建遊戲」和「創建團隊」的表單。但由於某種原因,管理頁面上的鏈接缺失。我也沒有在「模塊」部分中的模塊上的「配置」按鈕,但我不確定這兩者是否有關係。 – Napoleon