Création d'un module: Ajout d'un item dans le menu Drupal

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,
comme je l'ai dit dans un précédent sujet, je suis un petit nouveau dans le monde de Drupal... et j'ai forcément quelques petits soucis.

Pour le moment, j'ai décidé de créer un petit module simple histoire de voir comment ça fonctionne.
Donc la première chose que j'ai voulu faire, c'est d'ajouter un item dans le menu drupal permettant d'accéder à certaines pages/fonctions de mon module...

Pour ce faire, j'ai implémenté le hook_menu de Drupal... Mais malheureusement, même après avoir vidé le cache, rien n'apparait dans le menu de Drupal :'( ^^.

Pour que vous puissiez m'aider un peu plus précisement, voici le code de mon fichier ".module":

<?php
// $Id$

/<strong>
 *
Implementation of hook_help, it displays help and module information
 
* @return help text
 
*/
function
xmltotable_help($section) {
  
$output = '';
   
   switch(
$section) {
     case
'admin/help#xmltotable':
           
$output = '<p>'. t('This is my help').'</p>';
        break;     
   }
 
   return
$output;
}

/</
strong>
 *
Valid permissions for this module
 
* @return array  An array containing the valid permissions for this module.
 */
 function
xmltotable_perm() {
    return array(
'access xmltotable content');
 }
 
/**
  *
  */
 
function xmltotable_menu($may_cache) {
     
$items = array();
     
     
$items['admin/content/xmltt'] = array (
       
'title' => 'XML to Table',
       
'description' => 'Allow to import XML file into database',
       
'page callback' => 'select_xml_files',       
       
'access arguments' => array ('access xmltotable content'),
       
'file' => 'xml_tools.pages.inc',
       
'type' => MENU_NORMAL_ITEM
     
);
         
      return
$items;
  }
?>

(le dernier "?>" n'est pas présent dans le code source ;) )

Pour être bien complet, voici le code du fichier "xml_tools.pages.inc":

<?php
// $Id$

function select_xml_files() {
   
$output = "This is my page...";
    return
$output;
}
?>

En faite, mon module est "reconnu" par Drupal car j'ai pu le sélectionner et l'activer mais rien n'y fait, le menu n'a pas envie de se mettre à jour... C'est sans doute une bêtises ou quelque chose que j'ai mal compris.

Voilà j'espère que j'ai été assez clair dans mes explications.
Merci d'avance à ceux qui prendront le temps de répondre ;)

Forum : 
Version de Drupal : 

Pour être vraiment bien complet, voici le corps du fichier ".info"

; $Id$
name = XML to table
description = This module allows user to
core = 6.x
dependencies[] = importexportapi
dependencies[] = xml_parser
package = "My own modules"

J'ai testé ton code, et chez moi cela fonctionne.

Les petites modifications apportées :
- balises dans les commentaires (peut-être que tu avait mis cela juste dans le post du forum) remplacées par " /* ".
- L'argument que tu passes dans le hook_menu() est fait pour quoi ? Enlève le car il n'y a pas lieu de le mettre xmltotable_menu($may_cache) => xmltotable_menu().

Ensuite normalement tu verras bien apparaître ton Lien dans le menu "Contenu" de l'administration de Drupal.

Rolala, c'est vraiment bizarre chez moi, je n'ai toujours rien...

Tu as fait quelque chose d'autre de spécial? Ici, j'ai juste vidé le cache en allant dans "performance" puisque le module était déjà sélectionné...

La seule chose que j'ai fait sinon c'est supprimer les dependencies[] dans le .info car je ne voulais pas installer les autres modules.

Mais comme il n'y a aucune interaction avec eux, donc aucune raison pour que cela modifie le comportement de ton module.

Tu as placé le module dans quelle dossier? drupal/modules ou drupal/sites/all/modules?
je ne pense pas que ça change quelque chose mais bon, je désespère donc tout est bon ^^.

En tout cas merci pour toutes ces réponses ;)

Oui, dans le dossier "sites/all/mdoules"

Par contre je viens de voir qu'un de mes messages était mal passé, lorsque je disais avoir supprimé les balises "strong" que tu as mis dans ton exemple de code. Si tu les as vraiment dans ton code enlève les et remplace avec " /* ".

Sinon je ne vois pas pourquoi ça ne fonctionnerai pas.

Bon vu que je ne voyais pas ou j'avais une erreur, je suis repartie d'un module test dont les sources étaient données sur le net et j'ai supprimé ce dont je n'avais pas besoin afin d'avoir une base correcte... Et maintenant, ça fonctionne ^^.

Je ne sais pas ou j'avais fait une erreur mais bon, tant pis. En tout cas, un grand merci ;).

Par hasard, tu ne sais pas comment, dans un formulaire, je peux ajouter un bouton qui me permet de parcourir mes dossiers (du disque dur) afin de sélectionner un fichier?

Si tu ne sais pas, pas de soucis, je ferai un autre sujet je ne trouve pas ;).