2011-09-23 71 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創建的新創建的路徑。