2011-09-23 70 views
0

我写了一个简单的测试模块示例,2个文件,test.module,test.info,并在drupal 7模块中启用它们。Drupal 7示例模块,页面未找到,为什么?

我清除所有的缓存,并且还当我试图去为localhost/Drupal的/你好,我得到的Drupal未找到404页,这是为什么?

这里是我的代码:

<?php 

function test_world_help($section) { 
    switch ($section) { 
    case 'admin/help#hello_world': 
     $output = '<p>Hello world help...</p>'; 
     return $output; 
    case 'admin/modules#description': 
     return 'Hello world module description...'; 
    } 
} 

function test_world_menu($may_cache) { 
    $items = array(); 

    if ($may_cache) { 
    } 
    else { 
    $items['hello'] = array(
     'title' => 'Hello world page...', 
     'callback' => 'test_world_page', 
     'access' => TRUE, 
     'type' => MENU_CALLBACK 
    ); 
    } 

    return $items; 
} 

function test_world_page() { 
    return '<p>Hello world!</p>'; 
} 
+0

我很困惑,什么是test_world_page?没有页面钩http://api.drupal.org/api/drupal/includes--module.inc/group/hooks – Steven

回答

2

oncetwice之前发布几乎同样的问题。你为什么不更新原来的,而不是发布新的?

  • hook_menu()在Drupal 7中没有$ may_cache参数。您应该将其删除。但是,它不应该解决你的问题,因为它是未设置和错误的。因此,$ items应该仍然被填充。

  • 它是正确的,因为jprofitt说,你应该改变“回调”到“页面回调”。

  • 有没有这样的事情“访问”,但有“访问回调”和“接入参数”。您很可能正在寻找“访问回拨”。但是,您不能将其设置为“true”。它期望一个返回'true'或'false'的函数名称。它默认为'user_access',所以你应该这样离开它。但是,您可能希望将“访问参数”设置为“访问内容”。

下面的代码段是否工作得更好?

function test_world_menu() { 

    $items = array(); 

    $items['hello'] = array(
    'title' => 'Hello World!', 
    'page callback' => 'test_world_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK 
    ); 

    return $items; 
} 

看来你并没有真正看过documentation。我可能错了。然而,当你想要学习如何工作的基础知识时,api.drupal.org上的文档始终是一个好开始。

+0

嘿,我没有知道如何添加评论对不起,我已经试过你的代码,仍然找不到404页面,我不知道什么是错的:/ – Valoda

+0

确保在整个模块中使用相同的模块名称。你已经写了模块文件是test.module,而你的函数被命名为test_world_x()。这让我想到你在其他地方也做过同样的事情吗?选择一个名称,并确保所有文件和功能都使用该名称。它使得对事物的概览变得容易得多。此外,当您更改hook_menu时,禁用并启用您的模块,或者清除缓存。如果您仍然无法正常工作,请将.info文件发布到此处。 – sbrattla

+1

仍然不能正常工作:/这里是info文件。 name =测试模块 description =我的测试模块。 包=测试 版本= 1.0 核心= 7.x – Valoda

1

你或许应该改变'callback''page callback',因为我不相信hook_menu()具有只是一个普通的“回调”选项。而且,由于你正在使用Drupal 7,它的hook_menu()实际上没有参数。

0

卸载并重新安装您的自定义模块。我希望这能帮到您。因为drupal核心必须知道使用hook_menu创建的新创建的路径。