0

我已经尝试过在此处和其他 Drupal 表单上发布的使用 hook_menu() 的最简单示例,并且注意到似乎有效。我的代码,在:/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 版
  • 我启用了干净的 URLS 和 pathauto 模块

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

4

1 回答 1

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文件)。

于 2013-09-21T07:32:15.177 回答