Drupal 6无法构建菜单路由器和链接

Drupal 6无法构建菜单路由器和链接,drupal,menu,hyperlink,router,building,Drupal,Menu,Hyperlink,Router,Building,当我在Drupal中启用一个新菜单(例如,mymodule)时,Drupal应该能够从mymodule_菜单(hook_菜单)中获取菜单项,处理这些项,并将菜单项插入到menu_router和menu_links表中 但是,我的Drupal没有这样做。每次我启用一个模块(由我编写的或其他人贡献的模块,或核心模块),Drupal似乎都无法获得新信息。新启用的模块中定义的菜单项不会被处理并插入Drupal的菜单系统。这意味着新启用的模块没有机会工作——因为它无法访问 我通过手动将新模块的菜单项信息插

当我在Drupal中启用一个新菜单(例如,mymodule)时,Drupal应该能够从mymodule_菜单(hook_菜单)中获取菜单项,处理这些项,并将菜单项插入到menu_router和menu_links表中

但是,我的Drupal没有这样做。每次我启用一个模块(由我编写的或其他人贡献的模块,或核心模块),Drupal似乎都无法获得新信息。新启用的模块中定义的菜单项不会被处理并插入Drupal的菜单系统。这意味着新启用的模块没有机会工作——因为它无法访问

我通过手动将新模块的菜单项信息插入“菜单路由器”和“菜单链接”表来解决这个问题,新菜单开始工作。但是,如果每次启用模块时都必须这样做,这将是一场噩梦

有人有过同样的问题吗?如何解决这个问题


提前谢谢。

我不会使用任何SQL与菜单表交互,如果编辑错误的记录,可能会发生一些糟糕的事情

您的钩子菜单代码中一定有错误。你能粘贴它吗

另外,如果您正在开发一个具有菜单项的模块,我发现在添加/删除链接时在mymodule_init()中调用这两个函数非常方便:

cache_clear_all()
menu_router_build()

这将刷新所有缓存并重建菜单和调用hook_菜单的任何内容。如果之后没有出现,那么您的代码就有一个bug。我想看看。

您没有报告您使用的是哪个Drupal版本,但是在Drupal 6中,
hook\u menu()
的实现不会被调用,如果不是在某些情况下(例如安装模块时,或者执行模块更新时)

如果模块更改了菜单回调,但没有要执行的更新,则可以添加包含以下代码的更新函数:

// Change the name of the function to match the module name.
// Change the update number to the correct one for your case.
function custom_module_update_6201() {
  if (!variable_get('menu_rebuild_needed', FALSE)) {
    variable_set('menu_rebuild_needed', TRUE);
  }
}
从index.php检查变量,如果其值为
TRUE
,Drupal将自动重建菜单