Submitted by marwa on
Bonjour a tous,
maintenant je suis entrain de developper un module matiere permet de lister,ajouter des matieres pour le moment..
a coter du matiere.install, j'effectue un autre fichier.module, a l'intereur de ce fichier j'ai implemente la fonction matiere_help en plusla fonction matiere_menu permet de preciser mes menus.. seulement... je vous demande que ce je doit mettre plus, car je n'est pas exactement compris comment cette fichier fonctionne..
Merci a vous
Ce fichier, c’est tout ce que
Permalien Soumis par haza le 26 Avril, 2011 - 17:41
Ce fichier, c'est tout ce que doit "faire" ton module.
Je te conseil vivement d'aller lire la doc officiel pour mieux comprendre tout ça : http://drupal.org/node/1074360
Salut marwa ! vu d’apres tes
Permalien Soumis par benfarhat le 27 Avril, 2011 - 10:05
Salut marwa!
vu d'apres tes précédents commentaire que tu utilise drupal 6.x je rajoute un lien a celui de Haza et te propose de voir cette page qui est en francais
http://kolossaldrupal.org/docs/creer-modules-pour-drupal-6x
Pour faire ton module je pourrais te faire un résumé:
primo il y a des étapes a faire:
1 - création du répertoire de ton module sous le répertoire de ton drupal sites/all/module
2 - créer le fichier .info
c'est un fichier qui donne le nom de ton module, la description, la version de Drupal pour laquel il a été ecris, les dépendances par rapport au autres modules (par exemple un module qui surcharge une fonction d'un autre module pour l'améliorer, ou alors ui utilise la libraire d'un autre), le package (qui en faite n'est qu'un regroupement permettant dans la config de les voir par exemple regroupé) et enfin les fichiers qui fonctionne avec ce module.
3 - créer le fichier .test, c'est un fichier de test qui ermet de dire que le module fonctionne parfaitement et qui fonctionne grace au module "testing" de drupal.
ce fichier n'est pas handicapant, tu peux ne pas l'écrire
4 - créer le fichier .install, c'est le fichier qui te permet de créer un schema, une sortes d'abstraction de ta base de donnée contenant les champs/fiels, le type, longueur, valeur par defaut etc..
il contient aussi la fonction permettant la création de ce schéma, et la fonction qui permet lors de la désinstallation d'effacer cette table de la base et éventuellement d'autres variables qui aurait pu être défini ailleurs (dans ton module)
5 - les fichiers .tpl.php pour les modules qui créer du code HTML ou des éléments visible il permet de modifier le style (theming)
6 - les fichiers .admin.inc et .inc qui sont des portions de ton fichier .module et qui permet en les mettant ailleurs d'acroitre la performance
7 - et le fameux .module qui contient tous le reste
le reste c'est quoi??? ben a peu prés tout c'est des fonctions "hook" qui en faite te permette de faire tout ce que tu veux.
De base tu as besoin de deux fichier, le .info et le .module
le .info j'en ai deja parlé, par contre le .module c'est plus compliqué
en effet tu n'est pas obligé de créer des nouvelle table dans ta base de donnée,
tu peut par exemple dans ton cas utiliser un type de contenu et donc dans ton fichier module tu accede directement a ce type de contenu.
par exemple imagine un type de contenu appeler contenu_matiere qui contient un titre et une description
$type="contenu_matiere";
$status=1;
$query = db_select('node', 'n');
$query->addField('n', 'nid');
$query->addField('n', 'title', 'description');
$query->condition('n.type', $type, 'LIKE');
$query->condition('n.status', $status);
$result = $query->execute();
$value="";
foreach ($result as $row) {
$value.=$row->title.' - '.$row->description.'<br />';
return $value;
bien donc dans ton .module le plus simple est de créer une gestion de l'aide via le hook_help comme suit
/**
* Implements hook_help().
*/
function marwa_module_help($path, $arg) {
if($path=='admin/help/marwa_module'){
$values1 = "";
$values1 .= "bienvenue sur la page d'aide du module de marwa";
$values1 .= "ce module permet d'afficher les <b>matières</b>";
return t($values);
}
l'aide ici s'affichera quand tu iras sur l'adresse admin/help/marwa_module de ton site.
Ensuite tu as le choix! ton module va créer une page ou un bock (ou les deux)
si tu veux créer un block il faut configurer via les fonction block_info et block_view
pour ce qu'on appelle menu il ne faut pas le voir comme le terme menu!!! de base sur drupal quand tu créer quelques chose tu doit pouvoir y accéder! donc a chaque élément créer on y rajouter un pointeur dans le menu donc dans ton menu imagine que cette fonction c'est elle le menu et c'est a partir d'elle que tu va diriger les utilisateurs
donc voila un menu avec trois élément marwa1, marwa2 et marwa3
function mi_module_menu() {
$items = array();
$items['marwa1'] = array(
'title' => 'Liste des matières',
'page callback' => 'marwa_module',
'file' => 'inc/marwa_module.page.inc',
'type' => MENU_CALLBACK,
);
$items['marwa2'] = array(
'title' => 'appel d\'une fonction salut',
'page callback' => 'salut',
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
);
$items['admin/config/marwa3'] = array(
'title' => '3ème items du menu',
'description' => 'Configuration du module abc',
'page callback' => 'drupal_get_form',
'page arguments' => array('marwa_module_form'),
'access arguments' => array('accéder à l\'administration'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function salut(){
return 'bonjour tout le monde! vous êtes sur le site de marwa';
}
donc voila si tu met apres l'adresse de ton site /marwa1 ca lancera marwa_module et affichera ce que rend cette fonction
si tu met apres l'adresse /admin/config/marwa3 tu aura la page de config créer par le hook marwa_module_form
si tu met par exemple dans ton adresse /marwa2 alors ca appelera la fonction salut qui dira un simple bonjour
toi tu peut jouer sur cette fonction bonjour et mettre la fonction d'acces à la base de donné que j'ai donné plus haut comme suit
function salut(){
$type="contenu_matiere";
$status=1;
$query = db_select('node', 'n');
$query->addField('n', 'nid');
$query->addField('n', 'title', 'description');
$query->condition('n.type', $type, 'LIKE');
$query->condition('n.status', $status);
$result = $query->execute();
$value="";
foreach ($result as $row) {
$value.=$row->title.' - '.$row->description.'<br />';
return $value;
}
voila j'espère que ca t'aidera un peu
je précise que ce que j'écrit c'est pour Drupal 7, c'est pas trés différent de drupal 6.x
bonne continuation