drupal 7 hook_menu()无法正常工作

时间:2011-11-24 15:01:59

标签: php drupal drupal-7 hook

我正在尝试向主页>管理>配置页面添加一个部分,然后打开一个包含2个标签的新表单(create_team和create_game)。

我的代码(不起作用):

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'),
  );

当我用“admin / config / guild_management_core”替换“admin / config / annotate”时再次出错...

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:3)

要使本地任务起作用,路径必须直接位于父路径下。目前您有一个额外的级别/content/,这将阻止标签显示。

您的两个本地任务路径应为:

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

一旦你做了这个改变,清楚了Drupal的缓存,如果你仍然没有得到快乐,请转到模块页面,禁用你的模块,单击'卸载'选项卡,然后实际卸载你的模块。重新安装后,它应该可以正常工作。

<强>更新

我想我知道问题所在:您希望admin/config/guild_management_core下的链接在admin/config页面上的某个区块中显示为链接...为了完成第一个菜单item的页面回调需要:

system_admin_menu_block_page()

如果不是,Drupal将不知道将您的配置页放在主管理配置页面上(这也是所有核心/贡献模块也是如此)。

我不确定您是否可以直接在主配置页面下使用本地任务链接,因为我不确定Drupal是否有意义,但请尝试一下。

您可以在核心system_admin_menu_block_page模块中查看如何使用system的示例。