Drupal

Ce site est réalisé avec le CMS (Content Management System) Drupal en version 6 (traduction française ici mais il est presque indispensable de se débrouiller en anglais si l'on veut bénéficier de tous les outils existants pour Drupal).

Pourquoi drupal ?

Excelabo au fil de ses 8 premières années d'existence s'est enrichi de nombreuses astuces, classeurs, adresses de sites web et tutoriels. Malgré la mise en place de nombreux outils de recherche sur le site, il faut bien dire qu'il devenait difficile d'y retrouver ses petits.
Par ailleurs je voulais depuis longtemps permettre au lecteurs d'interagir d'avantage. L'expérience du wiki XlWiki a été un premier pas dans ce sens. Les limites ont vite été atteintes du fait de l'intrusion de spammeurs. De plus les contraintes rédactionnelles de wikini m'ont incitées à trouver un CMS répondant à l'ensemble de mon cahier des charges.

Tous les éléments d'excelabo étant déjà étiquettés avec des mots clefs (ouf !), il m'a donc paru indispensable d'utiliser cette information. J'ai testé plusieurs CMS, certains en y apssant beaucoup de temps (Joomla, Spip notamment). Drupal est un CMS permettant l'utilisation de taxonomies pour organiser le site. La taxonomie c'est la science de la classification (ce qui nous permet de dire que si certains doutent encore que l'homme descend du singe, en tous cas ils ne se trompent pas en disant qu'il est un jour descendu de son baobab). Drupal permet donc de regrouper sur une même page des éléments partageant certains mots clefs. et de présenter sur plusieurs pages différentes un même élément. C'est ce qui m'a fait le choisir.

Drupal est un CMS open source développé par une importante communauté d'utilisateurs dans le monde entier. Il fonctionne de façon très intéressante avec un noyau central (core) autour duquel se greffent des modules spécialisés répondant à des besoins qui diffèrent suivant le type de site.
Des sites professionels à fort traffic sont basés sur Drupal. Par exemple Mediapart. Ceci assure un suivi des pbs de sécurité, des mises à jour régulières, des forums d'utilisateurs pour répondre aux questions qui se posent lors de la mise en place.
Il y a également des graphistes qui dessinent des thèmes pour présenter un site Drupal de façon plus attrayante que la version de base (utilisée sur http://www.drupal.org).

J'ai beaucoup bénéficié des infos partagées par d'autres sur Drupal, à mon tour de décrire comment je l'ai utilisé, en espérant que cela puisse servir à d'autres.

Modules installés

En plus du core de Drupal, j'ai installé quelques modules complémentaires :

  • Views qui permet de regrouper les nodes dans une "vue". Quelques explications sur le paramétrage.
  • CCK (Create Content Kit) qui permet de créer des formulaires, des champs personnalisés.
  • Computed_field Qui permet de sortir en php des infos de la base de données (par exemple le nombre de téléchargement pour chaque classeur).
  • Admin_menu qui crée un menu déroulant permettant à l'administrateur d'accéder rapidement à toutes les pages d'administration du site.
  • Search Ranking remplace le module de recherche par défaut de Drupal en ajoutant une info sur la pertinence des pages renvoyées en fonction des critères de recherche.
  • FCK Editor, un editeur wysiwyg pour éditer les pages dans l'explorateur web. Permet également de gérer les fichiers uploadés sur le serveur.
  • Meta Tags, qui personnalise les balises utilsées par les robots pour indexer les pages du site.
  • Et le thème NewsFlash que j'ai personnalisé. Je l'ai choisi en partie à cause de son menu (ressemblant beaucoup à l'ancien menu d'excelabo :-) ) et pour son respect des normes CSS.

Organisation du contenu

Nodes

Chaque élément de base (astuce excel, tutoriel, page avec un lien vers un classeur individuel) est contenu dans une page (node) individuel. La génération de ces nodes dans la base de données à été faite avec un script VBA depuis excel pour récupérer le contenu de l'ancienne version.
A ce stade, chaque élément est accessible via une adresse de type http://monsite.com/node/n

Taxonomie

A chaque node est associé des mots clefs appartenant à un ou plusieurs "vocabulaires" de taxonomie. Par exemple, il y a un vocabulaire pour les auteurs, un pour les motsclefs excel, un pour les catégories (celles qui seront utilisées pour construire le menu)...

Alias

Si vous ouvrez une des pages du site via le menu, vous ne verrez pas http://www.excelabo.net/node/1 mais http://www.excelabo.net/accueil ce qui est plus joli et surtout plus instructif pour se repérer. Accueil est l'alias de node/1/
De même chaque page du site reçoit un alias. Celui-ci peut contenir un "faux" chemin : node/x peut devenir par exemple web/specialite/graphiques. La logique bien sur c'est qu'on y accède en allant dans le menu web puis spécialité puis rubrique graphiques. Là j'ai ramé pour trouver comment faire ! Il y a peut être plus simple, mais la solution que j'ai retenue fonctionne. Je la présente pour ceux qui se posent le même genre de questions.

Utiliser plusieurs termes de taxonomie pour générer les pages du menu

Création d'une Vue

Pour réaliser ceci, j'ai utilisé le module complémentaire Views 2 de Drupal. J'ai créé une vue ayant pour chemin menu-auto, affichant le titre, la date de mise à jour et le résumé des nodes. L'affichage est trié par date inverse de mise à jour (les plus récents en premier). Les arguments de la vue sont des identifiants de taxonomie (voir pourquoi ci-dessous).

Création des alias des vues

Pour afficher tous les nodes associés aux deux termes toto (identifiant tid=11) et titi (tid=12), on peut taper l'adresse
http://monsite.com/taxonomie/term/11,12
tandis que
http://monsite.com/taxonomie/term/11+12 renvoie les nodes associés soit à toto soit à titi.

On peut faire de même avec les vues : 11 et 12 sont les arguments passés à la vue.

Lors de la création d'une vue de type page, on indique un chemin. C'est celui qui permet ensuite d'appeler la vue. Ici j'ai choisi menu-auto.
http://monsite.com/menu-auto/11,12 renvoie comme précédement les nodes ayant à la fois titi et toto dans les mots clefs. L'intérêt de passer par une vue et non par la taxonomie c'est que je peux choisir les éléments à afficher et personnaliser l'affichage.

Malheureusement, ni avec des adresses de type http://monsite.com/taxonomie/term/11,12 ni avec celles de type http://monsite.com/menu-auto/11,12, on ne peut remplacer 11 et 12 par toto et titi. C'est une des limites de views.
Il y a des contournements possibles comme celui proposé ici

NB avec drupal 6 il faut à la fin remplacer
return array($newargs); 
par 
return $newargs;

mais cela pose je trouve plus de problème que ça n'en résoud dans la mesure où s'il est aisé de transformer le terme de taxonomie "Tableaux Croisés Dynamiques" en "tableaux-croises-dynamiques" (nécessaire pour l'affichage dans une adresse http) faire l'inverse en gérant les accents français est quasiment mission impossible, sauf à passer par une table de correspondance additionnelle.

J'ai donc choisi de créer des alias pour chacune des combinaisons de term identification (Tid) que l'on veut utiliser dans le menu.
Ce n'est pas très pratique car il faut avoir sous les yeux par la suite une table indiquant la correspondance entre le terme de taxonomie et son N°.

Pour cela il faut aller dans le menu administrer/alias d'url et cliquer sur ajouter. Dans le chemin drupal on indique menu-auto/11,12 pour récupérer les nodes ayant 11 ET 12  (ou menu-auto/11+12 si on veut 11 OU 12). Dans l'alias on ajoute un chemin logique compréhensible comme web/mvp/anglophones. Astuce : j'ai eu des problèmes en faisant des copier/coller des valeurs des Tids depuis un tableau excel. En resaisissant à la main les N° cela a résolu le problème...

Création de l'entrée de menu associée

Dans le menu administrer/menu, liens primaires, cliquer sur ajouter un élément. Entrer le chemin (soit le chemin drupal soit l'alias, l'alias étant plus facile à entrer et à vérifier par la suite). En dessous intrer le mot qui doit apparaitre dans le menu. Organisez ensuite votre menu à votre guise. 

Merci pour ces commentaires

Merci pour ces commentaires intéressants sur l'utilisation de Drupal.
Je trouve le site très réussi.

Aslak