Patterns est l'une des solutions développées par la communauté pour automatiser les tâches de configuration les plus récurrentes.
Le principe de Patterns est d'injecter une configuration dans un site installé ; cette configuration peut être plus ou moins complète : se limiter à injecter deux types de contenus + trois vocabulaires de taxonomie + les quatre vues qui vont avec, ou bien produire un site (presque) complet répondant à un besoin précis. On peut aussi s'en servir pour des tâches plus techniques (par exemple préparer le site avant sa mise en production : désactiver tous les modules "développeur", vider le cache, configurer le fonctionnement de celui-ci, etc.).
Un pattern est un fichier XML (on peut aussi utiliser le format YAML), constitué de trois parties :
- La description du pattern (auteur, version, etc.)
- La déclaration des modules requis
- Les actions que doit exécuter le pattern.
Un "pattern builder" est annoncé mais non encore développé ; cependant la syntaxe est assez logique et n'est pas difficile à comprendre. On peut donc créer ses propres patterns relativement aisément, en s'aidant du pattern inclus à titre d'exemple. La documentation semble cependant assez lacunaire et les développeurs peu présents pour répondre aux questions.
Le module gère également l'import de patterns (uniquement au format XML, mais si l'on dispose de l'accès FTP aux fichiers rien n'empêche de placer sur son serveur les fichiers YAML), notamment depuis l'URL d'un "patterns server". Il est recommandé de charger les patterns proposés par Gravitek Lab pour disposer de plusieurs exemples.
Un pattern peut être modifié et lancé de nouveau ; en revanche, rien n'en garantit la réversibilité - il est donc hautement recommandé de disposer d'une sauvegarde (le module Demonstration site peut s'avérer pratique). La contrepartie est qu'une fois un pattern lancé, on peut très bien se passer du module Patterns lui-même si l'on n'a plus besoin de mettre à jour le pattern utilisé.
Un pattern peut agir sur de nombreux points de la configuration du site : types de contenu (inclus les paramètres d'Automatic NodeTitle), vues, menus, blocs, utilisateurs, profils, taxonomie, paramètres de pathauto, permissions, variables du site, etc. Un pattern peut également créer des noeuds ou des utilisateurs.
Voir également le profil d'installation Patterns : http://drupal.org/project/patterns_profile
Suivre : http://groups.drupal.org/patterns
Un exemple
A titre d'exemple, vous pouvez examiner (et faire tourner, dans Drupal6) ce petit pattern documenté en français : minibiblio.xml. Il requiert le CCK (content, text et nodereference), la taxonomie, pathauto et automatic node title. Son effet est simplissime (et en principe sans danger !) : il crée un type de contenu Auteur, un type de contenu Livre (dont l'auteur est un nodereference au précédent type de contenu), deux vocabulaires de taxonomie associés au Livre, et trois "auteurs".
Quelques remarques :
- ce pattern a été construit comme exemple d'un pattern, pas pour réellement gérer des bibliographies ; la modélisation est simpliste et probablement pas la plus pertinente. Si vous avez vraiment besoin de gérer des listes bibliographiques, voyez le module Bibliography ou construisez une modélisation plus avancée.
- il a tourné sans difficulté "chez moi", mais testez-le uniquement sur un site "qui ne craint rien" et dont vous possédez une sauvegarde
- il n'est pas réversible, mais ses effets sont limités : vous pourrez supprimer aisément les types de contenu, vocabulaires et contenus créés
- je ne garantis aucune maintenance de ce pattern, qui n'est qu'un exercice
- une fois que vous l'avez fait tourner, éditez-le dans le module et ajoutez un champ "biographie" au contenu auteur (soit en utilisant le "body_label", soit en créant un champ de toutes pièces) ; enregistrez et faites-le tourner de nouveau. Bravo, vous avez créé votre premier champ depuis un pattern !
- notez l'encodage en UTF-8 ; les patterns anglophones que vous pourrez charger comme exemples sont généralement encodés en ISO-8859-1, mais nous on a des accents ! L'UTF-8 permet de les faire passer sans douleur
Attention la documentation pour l'import des vues est imprécise (et fausse dans la partie contenu, la correction se trouve dans les commentaires) : il faut syntaxer de cette manière :
<section>
<section>row_plugin</section> et non pas <name>..</name>
<value>node</value>
</section>
Une question ? un problème avec ce module ?
- Reportez-vous au fichier README.txt ou INSTALL.txt qui l'accompagne en général
- Relisez la page du module et recherchez dans les messages (issues) adressés au(x) développeur(s)
- Interrogez le(s) développeur(s) ("create an issue") : il est le MIEUX PLACÉ pour vous répondre !
- La communauté francophone pourra peut-être vous aider, si c'est un module très utilisé