我尝试过使用此处发布的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错误。我已经尝试启用和禁用该模块以及多次清除缓存而没有运气。以下是有关我的环境的一些其他信息:
我想要实现的最终目标是通过链接向购物车添加产品。我已经有了这个部分,所以我可以将产品ID传递给一个函数并将它们添加到购物车中。我将用我的函数替换helloworld_page(),然后将$ items ['hello']更改为$ items ['cart / add /%/%'],有两个通配符(产品ID和数量)。
答案 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.info
和mymodule.module
文件)。