Créer un Taxonomie à l'installation d'un module

Créer un Taxonomie à l'installation d'un module

28 Sep 2009 |  Drupal

Il est parfois utile de définir une taxonomie pour un module Drupal. Tout se passe lors de l’installation, rien de bien compliqué, voici comment faire.

Tout d’abord il vous faut créer votre module c’est à dire créer et remplir le fichier .info, et créer le fichier .module.

Création du vocabulaire et des termes associés

Nous allons ajouter à l’intérieur du hook_install notre code pour générer notre vocabulaire et nos termes de taxonomie. Déclaration du vocabulaire

$vocabulary = array(
  'name'        => t('NOM_DU_VOCABULAIRE'),
  'nodes'       => array('NOM_DU_TYPE_DE_CONTENU'=>1),
  'description' => t(''),
  'multiple'    => 0,
  'required'    => 1,
  'hierarchy'   => 0,
  'relations'   => 0,
  'module'      => 'NOM_DU_MODULE',
);

Sauvegarde du vocabulaire

taxonomy_save_vocabulary($vocabulary);

Création d’une variable contenu l’id du vocabulaire, cette variable est enregistrée dans la table variable par le biais de la fonction variable_set($name, $value).

variable_set('VARIABLE_DE_SAUVEGARDE (ex:NOM_DU_VOCABULAIRE_vocabulary)', $vocabulary['vid']);

Création et sauvegarde des TERMES du vocabulaire

$terms = array('TERME1','Terme2');
$vid = $vocabulary['vid'];
foreach($terms as $term){
  $edit = array('vid'=>$vid, 'name'=>$term);
  taxonomy_save_term($edit);
};

Nous venons de créer et sauvegarder notre vocabulaire et nos termes à l’installation du module, normalement vous devriez avoir le code suivant :

function MON_MODULE_install() {
  $vocabulary = array(
    'name'        => t('NOM_DU_VOCABULAIRE'),
    'nodes'       =>  array('NOM_DU_TYPE_DE_CONTENU'=>1),
    'description' => t(''),
    'multiple'    => 0,
    'required'    => 1,
    'hierarchy'   => 0,
    'relations'   => 0,
    'module'      => 'NOM_DU_MODULE',
  );

  taxonomy_save_vocabulary($vocabulary);        
        
  variable_set('VARIABLE_DE_SAUVEGARDE', $vocabulary['vid']);

  $terms = array('TERME1','Terme2');
  $vid = $vocabulary['vid'];
  foreach($terms as $term){
    $edit = array('vid'=>$vid, 'name'=>$term);
    taxonomy_save_term($edit);
  };
}

Suppression du vocabulaire

Lorsque l’on crée un module il faut penser à sa désinstallation et donc prévoir de supprimer ou non la taxonomie.

Pour effacer la taxonomie que l’on vient de créer, insérez le code que nous allons voir ci dessous dans le hook_uninstall. Cette fonction est appelée lorsque vous validez la désinstallation du module.

Tout d’abord nous allons récupérer l’id du vocabulaire que nous avons enregistré à l’installation dans une variable. Pour cela nous allons utiliser la fonction inverse de récupération qui est

variable_get($name, $default)

Maintenant que nous connaissons l’id de notre taxonomie il ne nous reste plus qu’à exécuter le code de suppression :

function MON_MODULE_uninstall(){
  //suppression du vocabulaire
  $vid = variable_get('VARIABLE_DE_SAUVEGARDE', ' ');    
  taxonomy_del_vocabulary($vid); 
}
Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi