Drupal hook_menu()无效

时间:2013-09-20 23:44:36

标签: php drupal-7

我尝试过使用此处发布的hook_menu()以及其他Drupal表单的最简单示例,并且注意似乎有用。我的代码在:/sites/themes/mytheme/mymodule.module中,如下所示:

<?php
function helloworld_menu() {
    $items = array();
    $items['hello'] = array(
        'title' => 'Hello world!',
        'type' => MENU_CALLBACK,
        'page callback' => 'helloworld_page',
        'access callback' => TRUE,
    );
    return $items;
}

function helloworld_page() {
    return 'Hello world !';
}

当我导航到www.mydomain.com/hello时,我收到404错误。我已经尝试启用和禁用该模块以及多次清除缓存而没有运气。以下是有关我的环境的一些其他信息:

  • 运行Drupal Commerce版本7.22
  • 我启用了干净的URL和pathauto模块

我想要实现的最终目标是通过链接向购物车添加产品。我已经有了这个部分,所以我可以将产品ID传递给一个函数并将它们添加到购物车中。我将用我的函数替换helloworld_page(),然后将$ items ['hello']更改为$ items ['cart / add /%/%'],有两个通配符(产品ID和数量)。

1 个答案:

答案 0 :(得分:2)

对于像hook_menu这样的钩子声明,函数名称应该像<your_module_name_here>_menu

这是你出错的地方。

您的模块名称为mymodule.module,因此应调用您的hook_menu,mymodule_menu

<?php
/**
 * Implements hook_menu().
 */
function mymodule_menu() {
    $items = array();
    $items['hello'] = array(
        'title' => 'Hello world!',
        'type' => MENU_CALLBACK,
        'page callback' => 'helloworld_page',
        'access callback' => TRUE,
    );
    return $items;
}

function helloworld_page() {
    return 'Hello world !';
}

请更正功能名称并清除缓存,然后重试。

另外我注意到你把模块放在一个非传统的位置。

请将其移至/sites/all/modules/custom/mymodule文件夹(mymodule.infomymodule.module文件)。