【问题标题】:Drupal hook to create module menuDrupal 钩子创建模块菜单
【发布时间】:2011-11-04 10:20:54
【问题描述】:

我正在尝试为我的模块在安装时创建锚链接。

我目前的策略是创建一个自定义菜单,类似于主菜单、辅助菜单等。 在此菜单中,我希望有一个或多个由我的模块定义的链接。然后我希望我的自定义菜单会自动有一个块,用户可以将其放置在他们喜欢的任何位置。

卸载我的模块后,我希望删除菜单及其链接。

谁能给我一些指导来完成这个?

【问题讨论】:

  • @siski,我只是在查看我对未回答问题的旧答案,想知道你是否解决了这个问题?如果没有,请告诉我,以便我进一步改进我的答案/帮助。

标签: drupal menu hook anchor


【解决方案1】:

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() 可能会更好。

请注意,您还需要使用 hook_disable()hook_uninstall() 才能在之后删除菜单链接。

【讨论】:

  • 谢谢,我会尽快尝试你的方法。反对票不是来自我:-)
  • @sisko 没问题。希望你能把它整理好——如果你不知道在哪里问:) coracho,谢谢!
  • 嗨,Ben,我尝试了您建议的解决方案,但这并不是我想要实现的。我需要创建一个名为“simple-menu”的自定义菜单,并在其中创建一个名为“simple-link”的链接。另外,也许您还可以通过告诉我当我单击“简单链接”时是否有针对我的模块的钩子之一来提供帮助?真的希望有人能提供帮助....谢谢!
  • 嗨 sisko,我已经修改了我的答案,向您展示如何首先创建菜单。我相信您不必针对挂钩函数-我认为您可以使用数组键“页面回调”并将其传递给路径。这可能不是 100% 正确,因为我没有测试过。
  • +1 记得包含菜单创建,我只是花了一些时间在谷歌上搜索,很多人忽略了包含或只是指向示例模块
猜你喜欢
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多