【问题标题】:Drupal hook_menu() not workingDrupal hook_menu()不工作
【发布时间】:2013-09-20 23:44:35
【问题描述】:

我已经尝试过使用 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 版
  • 我启用了干净的 URLS 和 pathauto 模块

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

【问题讨论】:

    标签: php drupal-7


    【解决方案1】:

    对于像hook_menu 这样的钩子声明,函数名应该像&lt;your_module_name_here&gt;_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 文件)。

    【讨论】:

    • 哇,我认为函数名(“_menu”除外)或模块的位置无关紧要。另外,我只使用了虚拟数据,但它仍然有效,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多