2011-09-23 8 views
0

간단한 테스트 모듈 예제 인 test.module, test.info 2 개를 작성하고 drupal 7 모듈에서 사용 가능하게했습니다.Drupal 7 예제 모듈, 페이지를 찾을 수 없습니다, 이유는 무엇입니까?

모든 캐시가 지워졌고 localhost/drupal/hello로 이동하려고 할 때도 drupal 404 페이지를 찾을 수 없습니다. 이유는 무엇입니까?() 단지 일반 "콜백"옵션이 나는 hook_menu을 생각하지 않는 한 당신은 아마, 'page callback''callback'을 변경해야합니다

<?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 인수가 없습니다. 제거해야합니다. 그러나 그것은 문제가 해결되지 않았기 때문에 해결되지 않습니다. 따라서 $ 항목은 여전히 ​​채워 져야합니다.

  • 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_world_x() 인 동안 모듈 파일은 test.module이라고 썼다. 이것은 내가 다른 곳 어디에서도 똑같은 일을했다고 생각하게 만든다. 하나의 이름을 선택하고 모든 파일과 함수가 해당 이름을 사용하는지 확인하십시오. 그것은 사물의 개요를 얻는 것이 훨씬 더 쉽습니다. 또한 hook_menu를 변경하거나 캐시를 지우면 모듈을 비활성화하고 활성화하십시오. 그래도 문제가 해결되지 않으면 여기에 .info 파일을 게시하십시오. – sbrattla

+1

아직도 작동하지 않습니다 :/여기는 정보 파일입니다. name = 테스트 모듈 description = 내 테스트 모듈. 패키지 = 테스트 버전 = 1.0 코어 = 7.x – Valoda

1

:

여기 내 코드입니다. 그리고 Drupal 7로 작업하고 있기 때문에 hook_menu()에는 실제로 매개 변수가 없습니다.

0

사용자 정의 모듈을 제거하고 다시 설치하십시오. 이게 당신을 도울 수 있기를 바랍니다. drupal 코어가 hook_menu를 사용하여 생성 한 새로 생성 된 경로를 알아야하기 때문입니다.

관련 문제