Anatomie d’un thème Drupal
Si vous regardez le contenu du répertoire d’un thème phptemplate vous y trouverez en général les fichiers suivants :
- Un fichier .info obligatoire pour y stocker des paramètres de configuration,
- Des gabarits en .tpl.php pour contrôler ce qui est affiché,
- Des feuilles de styles pour gérer l’apparence visuelle de ce qui est affiché,
- Un fichier template.php qui contiendra le code de fonctions spécifiques au thème afin, si nécessaire, de manipuler et transformer les données,
- Divers autres fichiers : logo, miniature…
.info (requis)
Ce fichier est obligatoire pour que votre thème soit détecté par Drupal. Son rôle est de configurer certaines éléments de votre thème. Vous pouvez y définir :
- Les méta données,
- L’emplacement des feuilles de styles qui vont contrôler l’affichage,
- L’emplacement des scripts JavaScripts,
- Le nom des différentes régions de vos blocs de contenus,
- Le nom du thème « parent » dans le cas d’un sous-thème (voir plus loin)
- Et plus encore, mais tout le reste est optionnel.
Le nom interne du thème est aussi déduit de ce fichier. Par example, si il est nommé « drop.info », alors Drupal considèrera que le thème s’appelle « drop ».
Les version 5 et précédentes de Drupal utilisaient le nom du répertoire qui contenait les fichiers du thème pour en déduire le nom interne du thème.
Les fichier info pour les thèmes sont nouveaux dans Drupal 6. Dans la version 5, les fichiers .info était seulement utilisés pour les modules.
Fichiers de gabarits (template) (.tpl.php)
Chaque élément de contenu (nœud, block, page, etc.) est contrôlé par son propre gabarit. Ce sont ces gabarits qui vont déterminer quels champs de chaque contenu vont être affichés. Pour accomplir leur rôle, ces gabarits sont principalement constitués de textes (pour le contenu statique), de variables PHP (pour le contenu dynamique) et de balises xHTML (pour la structuration du contenu).
Il y a des situations où ils peuvent afficher d'autres type de données -xmls rss par exemple. Chaque fichier .tpl.php manipule l’affichage de données spécifiques au thème et dans certaines situation il peut manipuler plusieurs fichiers .tpl.php au travers du mécanisme de « suggestions ».
Faites attention à ne pas compliquer inutilement la logique et le contenu de ces fichier. Dans la plupart des cas, ils ne devraient contenir que des balises xHTML et des variables PHP. Vous pouvez utiliser le fichier template.php pour y intégrer le code plus complexe (voir ci-dessous).
Ces fichiers sont optionnels et s’il n’en existe aucun dans votre thème, l’affichage des contenus sera celui par défault. En effet, de nombreux gabarits standard existent dans les répertoires de l’application et de ses modules. Ce sont eux qui seront utilisé par défaut. En les copiant dans votre répertoire de thème vous vous assurez que Drupal prendra votre version en compte.
Note : Le « registre de thème » stocke les données de thème en cache Il doit être actualisé lorsque vous ajoutez ou modifiez des fichiers de gabarit ou des fonctions de thème.
Les feuilles de styles (.css)
Les feuilles de style CSS contrôlent l’apparence visuelle des contenus affichés par les gabarits. A l’image des fichiers de gabarit, elles sont optionnelles car les feuilles de styles standards de Drupal et de ses modules sont actives par défaut. Par contre chaque déclaration placée dans une feuille de style de votre thème interceptera la déclaration standard et sera donc prise en compte.
Le fichier template.php
Les fonctions spécifiques à votre thème, les fonctions de thème que vous interceptez et tout autres spécificités doivent être placés ici. Ce fichier va gérer toute la logique conditionnelle et manipuler les données de sortie. Cela n’est pas obligatoire, mais afin d’améliorer la lisibilité des fichiers .tpl.php vous pouvez inclure dans le fichier template.php des pré-processeurs qui vont générer des variables avant quelles soient inclues dans les balises des fichiers .tpl.php.
Le fichier doit commencer par une balise d’ouverture PHP « < ? php », par contre il est recommandé de ne pas inclure la balise de fermeture.
Les sous-thèmes
Pour faire court, on peut dire que les sous-thèmes se comportent comme n’importe quel autre thème. La seule différence est qu’ils héritent des ressources de leurs thèmes « parents ». Pour créer un sous-thème, il faut indiquer quel est son thème de base dans le fichier .info. Le sous-thème héritera alors de toutes les ressources du thème parent. Il peut y avoir de multiple niveau d’héritage car un sous-thème peut être le thème de base d’un autre sous-thème. En fait il n’y aucune limite matérielle à cela.
Drupal 5 et les versions précédentes, demandaient à ce que les sous-thèmes soient placés dans des sous-répertoires du thème parent. Ce n’est plus le cas avec drupal 6.
Autres
- Le logo et la capture d’écran ne sont pas nécessaires pour faire fonctionner le thème. Ils sont cependant recommandés, surtout si vous souhaitez partager votre thème avec la communauté. La miniature sera affiché dans l'interface d'administration des thèmes et dans celle de gestion des paramètres utilisateurs pour sélectionner un thème. Pour plus d’information voyez les conseils relatifs aux captures d’écran.
- Afin de fournir plus d’information de paramétrage (logo, recherche, mission, etc.) un fichier “ theme-settings.php" peut-être utilisé. Ceci est une fonctionalité avancée. Plus d’information dans la section Paramétrage Avancé du manuel.
- Pour le support du module « color », un répertoire « color » avec un fichier « color.inc » et quelques autres fichiers est nécessaire.
Si vous voulez baser votre travail sur un thème existant, utilisez la méthode des sous-thèmes ou faisez une copie et renommez le thème. Il fortement déconseillé de modifier directement Garland ou Minelli parce qu’ils sont utilisé pour les processus d’installation et de mise à jour.
Tous les thèmes doivent être installés dans le répertoire « sites/all/themes » afin de les séparer des fichiers standards. Lisez le chapitre sur les installation multi-site pour voir toutes les possibilités d’emplacement.



Commentaires récents