Drupal 自定义菜单的帮助

Drupal 自定义菜单的帮助,drupal,drupal-modules,drupal-7,Drupal,Drupal Modules,Drupal 7,Drupal 7hook_menu()让我很困惑;我什么都试过了,但似乎都没法成功 我需要什么:在自定义模块中,我想创建一个新菜单,并向该菜单添加大约四个链接。听起来很简单,但我正在努力。我已经能够使用.install文件中的$menu数组创建菜单本身,但是向该菜单添加项目没有意义 正在工作的代码: $menu = array( 'menu_name' => 'project-menu', 'title' => $t('Project Menu'), 'descrip

Drupal 7
hook_menu()
让我很困惑;我什么都试过了,但似乎都没法成功

我需要什么:在自定义模块中,我想创建一个新菜单,并向该菜单添加大约四个链接。听起来很简单,但我正在努力。我已经能够使用.install文件中的$menu数组创建菜单本身,但是向该菜单添加项目没有意义

正在工作的代码:

$menu = array(
  'menu_name' => 'project-menu', 
  'title' => $t('Project Menu'), 
  'description' => 'Project Menu',
); 

menu_save($menu);
$items = array();

$items['project-menu/%'] = array(
  'title' => 'Test Link',
  'page callback' => 'dc_project_page',
  'page arguments' => array(1),
  'access callback' => TRUE,
  'type' => MENU_LOCAL_TASK,
);

return $items;
不起作用的代码:

$menu = array(
  'menu_name' => 'project-menu', 
  'title' => $t('Project Menu'), 
  'description' => 'Project Menu',
); 

menu_save($menu);
$items = array();

$items['project-menu/%'] = array(
  'title' => 'Test Link',
  'page callback' => 'dc_project_page',
  'page arguments' => array(1),
  'access callback' => TRUE,
  'type' => MENU_LOCAL_TASK,
);

return $items;
这些都在
dc\u project\u菜单()下的dc\u project.install文件中。希望我只是在做一些愚蠢的事情,非常感谢所有的帮助。甚至只是把我指给一个模块,作为一个简单的例子,谢谢。我确实查看了这个示例项目,但在向我的新菜单添加链接方面没有得到任何结果。

传递到
$items
的内容不起作用,因为
菜单保存()
只接受包含
菜单名
标题
说明
的数组。 在
$items
中使用的是一个数组,它描述了由模块实现的菜单回调,所有模块实现的菜单回调的定义不保存在“menu_custom”(从
menu_save()
使用的表)中,而是缓存在Drupal缓存表中

如果您试图更改由另一个模块定义的菜单回调,那么您应该实现;否则,如果您只想定义模块的菜单回调,则应该实现

钩子实现(
hook\u menu()
hook\u menu\u alter()
)必须在模块文件中(在您的情况下,在dc\u project.module中),而不是在dc\u project.install中。Drupal在正常加载已启用的模块时不加载安装文件;它在更新(或安装)模块时加载安装文件,但在其他情况下不加载安装文件。

使用
menu\u save()
保存菜单的代码可以在安装文件中、或的实现中。也可以将其用于实施;在这种情况下,代码(在模块启用时执行)应首先验证尚未添加菜单。(
hook\u enable()
hook\u disable()
应该放在安装文件中。)

wow,我还没有尝试使用您的指导修复我的代码。但这是非常有用的,非常感谢。感觉我对drupal菜单系统有了更好的理解。