2011-09-23 2 views
0

J'ai écrit un exemple de module de test simple, 2 fichiers, test.module, test.info, et les a activés dans les modules drupal 7.Exemple de module Drupal 7, page introuvable, pourquoi?

J'ai effacé tout le cache, et encore quand j'essaye d'aller à localhost/drupal/bonjour, j'obtiens la page de drupal 404 non trouvée, pourquoi est-ce?

Voici mon code:

<?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

Je suis confus, c'est quoi test_world_page? Hé, je ne savais pas comment ajouter un commentaire désolé, j'ai essayé votre code, et toujours pas de crochet de page http://api.drupal.org/api/drupal/includes--module.inc/group/hooks – Steven

Répondre

2

Vous avez posté presque la même question once et twice avant. Pourquoi ne mettez-vous pas à jour l'original au lieu d'en poster de nouveaux?

  • Le paramètre hook_menu() n'a pas l'argument $ may_cache dans Drupal 7. Vous devez le supprimer. Cependant, il ne devrait pas résoudre votre problème car il est non défini et faux. Ainsi, les $ doivent toujours être renseignés.

  • Il est exact, comme jprofitt dit, que vous devriez changer « rappel » à « rappel de page ».

  • Il n'y a pas une telle chose comme « l'accès », mais il est « rappel d'accès » et « arguments d'accès ». Vous êtes probablement à la recherche d'un «rappel d'accès». Cependant, vous ne pouvez pas simplement le définir sur "true". Il attend un nom de fonction qui renvoie 'true' ou 'false'. Il est par défaut 'user_access', donc vous devriez le laisser comme ça. Toutefois, vous pouvez définir des "arguments d'accès" à quelque chose comme "Accéder au contenu".

Est-ce que le code suivant fonctionne mieux?

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; 
} 

Il semble que vous ne l'avez pas vraiment eu un coup d'oeil à la documentation. J'ai peut être tort. Cependant, la documentation sur api.drupal.org est toujours un bon début lorsque vous voulez apprendre les bases du fonctionnement de quelque chose.

+0

obtenir 404 page introuvable, je n'ai aucune idée de ce qui ne va pas:/ – Valoda

+0

Assurez-vous d'utiliser le même nom de module dans tout votre module. Vous avez écrit que les fichiers du module sont test.module alors que vos fonctions s'appellent test_world_x(). Cela me fait penser que vous avez fait la même chose ailleurs? Choisissez un nom et assurez-vous que tous les fichiers et toutes les fonctions utilisent ce nom. Il est tellement plus facile d'avoir un aperçu des choses. En outre, désactivez et activez votre module lorsque vous apportez des modifications à hook_menu, ou désactivez le cache. Si vous avez encore des difficultés à le faire fonctionner, publiez le fichier .info ici aussi. – sbrattla

+1

Ne fonctionne toujours pas:/Voici le fichier info. name = Module de test description = Mon module de test. package = test version = 1.0 core = 7.x – Valoda

1

Vous devriez probablement changer 'callback' à 'page callback', car je ne crois pas hook_menu() a juste une simple option "callback". Et puisque vous travaillez avec Drupal 7, son hook_menu() n'a pas de paramètres.

0

Désinstaller et réinstaller votre module personnalisé. J'espère que cela t'aidera. Parce qu'il est nécessaire que drupal core connaisse le nouveau chemin créé en utilisant hook_menu.