php - 如何从我的自定义 Drupal 7 模块添加菜单项

标签 php menu drupal-7 hook-menu

使用我的自定义 drupal 模块,我尝试使用 hook_menu() 向菜单中插入添加菜单项。 它应该显示链接到用户配置文件的用户名。 (我的任务可能类似于 Add menu item/link to Drupal menu (programatically?) 。)

[编辑:]我尝试用以下方法解决该任务,但可能是这样做的方法错误..

function mymodule_view_user_page()
{  
  global $user;
  if ($user->uid != 0) {
    /*$items = array(
      'link_path'   => drupal_get_normal_path('user'),
      'link_title'  => 'Account',
      'menu_name'   => 'main-menu',
      'weight'      => 8,
    );*/

    $items['user'] = array(
      'title'           => 'Page name',
      'description'     => t('Account'),
      'menu_name'       => 'main-menu',
      'weight'          => 8,
      'access callback' => TRUE,
      'page callback'   => 'mymodule_view_user_page',
      'access arguments' => array('view own profile'), // permission
      'type' => MENU_NORMAL_ITEM,

    );
    return $items;
  }
}

function mymodule_view_user_page_view_user_page()
{
  drupal_goto('user');
}

上面的代码没有显示任何内容,但也没有错误..

我可能不想使用页面回调,因为该页面已经正确存在,但我不确定是否不设置它。

hook_menu() 文档页面 hook_menu 确实很广泛,但似乎我对它的理解不正确,并开始对它感到困惑..

谢谢各位指点! PP

最佳答案

Drupal 钩子(Hook)基于命名约定,如果钩子(Hook)称为 hook_menu() 并且您的模块称为 mymodule 那么您需要实现的函数称为 mymodule_menu()。代码如下所示:

function mymodule_menu() {
  $items['user'] = array(
    'title'           => 'Page name',
    'description'     => t('Account'),
    'menu_name'       => 'main-menu',
    'weight'          => 8,
    'access callback' => TRUE,
    'page callback'   => 'drupal_goto',
    'page arguments' => array('user'),
    'access arguments' => array('view own profile'), // permission
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

但是,路径 user 已在系统中声明,因此您所做的操作会产生各种问题。你想做的是使用 hook_menu_alter()并更改现有路径的menu_name:

function mymodule_menu_alter(&$items) {
  $items['user']['menu_name'] = 'main-menu';
}

这样做,您将不需要提供自己的页面回调,因为标准的用户路径将只提供正常的页面。唯一的区别是,一旦您清除了 Drupal 的缓存,该帐户的链接就会出现在主菜单中。

关于php - 如何从我的自定义 Drupal 7 模块添加菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400442/

相关文章:

css - 将菜单与响应式缩略图网格的第一个缩略图对齐

drupal - Drupal 7 上的工作台未正确返回草稿

drupal - 我可以使用 drupal View 为一系列页面创建 "table of content"页面吗?

javascript - 如何正确地将 onchange 属性添加到 Drupal 7 中的表单字段

php - Firebug AJAX 请求中止 - 无响应正文或 header (同一域)

php - mysql select查询彩票组合

html - 滚动时如何使链接的整个背景发生变化而不仅仅是文本?

iOS 7 - SpriteKit 按钮/菜单项

php - json_encode 中的 JSON_ERROR_RECURSION 意味着什么?

php - 删除出现在所有行中的相似字符