【问题标题】:drupal 7 hook_menu() not workingdrupal 7 hook_menu()不工作
【发布时间】:2011-11-24 15:01:58
【问题描述】:

我正在尝试向主页>管理>配置页面添加一个部分,然后打开一个带有 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/annotate”替换为“admin/config/guild_management_core”时,它又出错了......

【问题讨论】:

    标签: php drupal drupal-7 hook


    【解决方案1】:

    更新

    这应该适合你:

    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;
    }
    

    【讨论】:

    • 这不是问题,OP 期望链接显示在 /admin/config 的块中,而您提供的代码不会出现这种情况
    • @Clive - 第一个 $item 创建菜单正常项目,显示在管理块中。第二个 $item 将其定义为默认本地任务,第三个 $item 生成第二个选项卡。
    • @VladStraulat:我刚刚尝试了你的代码,正如预期的那样,admin/config 页面上没有显示块和链接。
    • 同样的结论。它们确实显示在管理模块的配置部分,但不在常规管理/配置页面中。这将是一个很好的解决方法,但确实不是我的意思。
    • @Napoleon - 请查看我更新的答案。我刚刚测试过,我的配置页面中有块。希望它会有所帮助。干杯。
    【解决方案2】:

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

    你的两个本地任务路径应该是:

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

    一旦您完成了更改清除 Drupal 的缓存,如果您仍然不满意,请转到模块页面,禁用您的模块,单击“卸载”选项卡,然后实际卸载您的模块。一旦你重新安装它应该可以正常工作。

    更新

    我想我知道问题出在哪里:您希望 admin/config/guild_management_core 下的链接作为链接出现在 admin/config 页面上的块中...为了做到这一点,第一个菜单项的页面回调需要成为:

    system_admin_menu_block_page()

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

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

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

    【讨论】:

    • 仍然没有成功。没有错误消息,但管理页面上也没有显示链接。
    • 可以直接到路径admin/config/guild_management_core/create_team吗?
    • 是的,它显示了一个带有 2 个标签页“创建游戏”和“创建团队”的表单。但由于某种原因,管理页面上的链接丢失了。我在“模块”部分的模块上也没有“配置”按钮,但我不确定这两个是否相关。
    • @user653160:它们不相关,配置链接来自模块的.info 文件。我已经更新了答案,希望对您有所帮助
    • 是的,我希望他们在那里的一个街区。但我注意到它们确实出现在页面上,但作为管理页面上的标签页......这远非理想。我尝试了 Annotation 模块中的代码示例(请参阅第一篇文章中的新部分)并且确实有效。但是,我无法将其转换为我的模块可以使用的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多