Blog

DRUPAL : Création de thème

18.09.2013
creation d'un theme drupal

Pour démarrer dans la création de thème sur Drupal, il est toujours plus simple de commencer par un thème existant et de le retoucher ensuite. Le thème ZEN reprend l’ensemble des fichiers nécessaires pour créer un thème et les différents fichiers sont commentés.

 

Pour le télécharger : http://drupal.org/project/zen

Le répertoire des thèmes

L’ensemble des thèmes que l’on ajoute à Drupal doit se trouver dans le répertoire suivant : site/all/themes. Ensuite, le nom du dossier correspond au nom du thème.

 

Figure 1 : Répertoire des thèmes

 

Une fois le thème ajouté dans ce répertoire, il faut simplement l’activer dans la partie administration (menu apparence) pour qu’il s’affiche.

Figure 2 : Activation du thème ZEN

 

Création du fichier .info

Nous allons tout d’abord nous intéresser au fichier zen.info qui reprend les éléments essentiels du thème.

 

name        = Zen
description = Zen sub-themes are the ultimate starting themes for Drupal 7. Read the online docs or the included README-FIRST.txt on how to create a theme with Zen.
screenshot  = zen-internals/screenshot.png

core        = 7.x
engine      = phptemplate

regions[help]           = Help
regions[sidebar_first]  = First sidebar
regions[sidebar_second] = Second sidebar
regions[navigation]     = Navigation bar
regions[highlighted]    = Highlighted
regions[content]        = Content

regions[header]         = Header
regions[footer]         = Footer
regions[bottom]         = Page bottom
regions[page_top]       = Page top
regions[page_bottom]    = Page bottom

settings[zen_breadcrumb]           = yes
settings[zen_breadcrumb_separator] = ' › '
settings[zen_breadcrumb_home]      = 1
settings[zen_breadcrumb_trailing]  = 1
settings[zen_breadcrumb_title]     = 0
settings[zen_layout]               = zen-columns-liquid
settings[zen_jump_link_target]     = main-menu
settings[zen_rebuild_registry]     = 0
settings[zen_wireframes]           = 0

; Information added by drupal.org packaging script on 2011-04-25
version = "7.x-3.1"
core = "7.x"
project = "zen"
datestamp = "1303759317"

Au travers de ce fichier, nous allons pouvoir définir les paramètres principaux du thème. Nous allons aussi définir les positions qui seront présentes dans le thème. Dans chaque position, il sera possible de placer des blocs. Les autres informations présentes servent à définir les paramètres de base du thème.

 

Dans ce fichier, il est aussi possible d’ajouter des fichiers CSS ainsi que des fichiers Javascript. Il faut utiliser la syntaxe suivante :

 

stylesheets[all][] = css/style.css
scripts[] = my_script.js

Création de la page principale

La page principale qui dirige le thème est la suivante : page.tpl.php.

Figure 3 : Le fichier page.tpl.php

 

Lorsque l’on ouvre ce fichier, on comprend tout de suite l’intérêt de travailler avec le thème ZEN car les différentes variables du fichier sont toutes commentées. On retrouve ainsi les variables correspondantes aux positions définies dans le zen.info mais aussi les variables pour récupérer le menu, le titre du site ...

 

Je vous conseille de vous familiariser avec ces variables car elles vous feront gagner beaucoup de temps dans le développement de votre thème. Nous avons donc vu les aspects principaux qui caractérisent un thème. Cependant, un thème va aussi nous permettre d’influer sur la présentation des modules.

 

Création de template de node

Nous allons maintenant nous intéresser à l’ensemble des fichiers se trouvant dans le répertoire template. Nous allons prendre comme exemple le fichier node.tpl.php.

Figure 4 : Le fichier node.tpl.php

 

Ce fichier générique permet la mise en forme des différents nodes du site. Dans le fichier, les différentes variable sont aussi commentées. Il est donc très facile de retrouver n’importe quel champ d’un node. En effet, la variable objet $node contient l’ensemble des valeurs du node.

 

Cependant, il est possible d’aller encore plus loin dans les thèmes de node. En effet, il va être possible de créer un thème pour un type de node. Pour cela, il suffit de nommer son fichier de la manière suivante : node-nomdutypedenode.tpl.php.

 

Exemple : node-stories.tpl.php permet de créer un thème pour le contenu de type stories.

 

Création du fichier template.php

Ce fichier permet de créer des actions spécifiques avant le chargement de certains éléments. Dans le jargon Drupal, nous appelons cela des Hooks.

 

Nous allons donc retrouver les fonctions suivantes :

Figure 5 : Liste des fonctions présentes dans le fichier template.php

 

Le thème ZEN reprend les principales fonctions que l’on utilise couramment dans ce fichier. Il est alors très simple de rentrer une action spécifique si besoin.

Pour aller plus loin

Nous avons pu parcourir les éléments essentiels d’un thème sur Drupal au travers du thème ZEN. De part sa communauté mondiale, il existe évidemment de nombreux autres thèmes qui sont directement accessibles via le site de Drupal : http://drupal.org/project/Themes.

 

Il existe aussi une documentation complète (en anglais) qui reprend les aspects que nous avons vu en allant un peu plus loin : http://drupal.org/documentation/theme.

 

Conclusion

 

Au travers de cet article, nous avons vu qu’il est très facile de comprendre le fonctionnement d’un thème sur Drupal et de le customiser pour obtenir ce que nous souhaitons.

 

Le thème ZEN simplifie grandement la tâche car l’ensemble du code est commenté. Pour créer un thème, il est donc plus facile de partir de celui-ci plutôt que de zéro.

 

La communauté de Drupal a mis à disposition un certain nombre de thèmes mais qui reste limité. En effet, par comparaison, Wordpress et Joomla disposent d’un nombre plus conséquent de templates. Cependant, la rapidité et la simplicité pour créer un thème convaincront les intégrateurs de choisir le CMS Drupal.

Un projet ? Parlons-en

Nous sommes à votre écoute pour étudier vos besoins
et vous proposer les meilleures solutions.

Autres articles

L'une des fonctionnalités les plus couramment demandé par nos clients est l'intégration du site web avec le système de gestion de la relation client de leur entreprise. Et, dans l'univers des CRM, Salesforce fait incontestablement figure de référence.