Sous-thèmes, leur structure et l'héritage

Date du document original en anglais : 14 septembre 2009 – 17h38 - http://drupal.org/node/225125

Les sous-thèmes sont identiques aux autres thèmes, à une différence près : ils héritent des ressources de leurs thèmes parents. Il n'y a pas de limite au nombre de sous-thèmes qui peuvent dériver les uns des autres à partir du thème-parent.

Un sous-thème peut être l'enfant d'un autre sous-thème, et il peut être ramifié ou organisé comme bon vous semble. Ce qui offre de grandes possibilités :

Supposons que vous démarriez en créant un thème global qui servira de maquette de base, les détails pourront ensuite être affinés dans un sous-thème. Ainsi, à partir d'une même base de départ, vous pouvez essayer différents designs en dérivant un ou plusieurs sous-thèmes à partir de ce thème de base.

Vous travaillez sur une installation multi-site mais avez besoin d'un "look and feel" cohérent ? Avec des sous-thèmes beaucoup de ressources graphiques peuvent être partagées. Les particularités d'un site peuvent être paramétrées dans un sous-thème spécifique, et si les ressources partagées doivent être modifiées, elles ne le sont qu'une seule fois et s'appliquent à toutes les installations. Avec une organisation soignée, les possibilités sont infinies.

La déclaration du thème parent (ou « base theme ») se fait dans le fichier .info du sous-thème :

base theme = themeName

Dans cet exemple, on suppose que themeName est le nom interne du thème parent.

Le sous-thème hérite alors de ce qui suit :

  • Toutes les feuilles de style du thème parent, il existe toutefois une option qui permet d'en contrôler la portée. Cependant, votre sous-thème doit déclarer au moins une feuille de style pour qu'il puisse hériter des feuilles de styles parent.
  • Tout le code JavaScript du theme parent.
  • Tous les fichiers gabarits (.tpl.php)
  • Tout ce qui a été défini dans le fichier template.php, y compris les fonctions surchargées (), les préprocesseurs. Chaque sous-thème devra incorporer son propre fichier template.php en plus de celui fourni par le thème parent.
  • Copie d'écran du thème parent, pour autant que le fichier .info utilise les mêmes paramètres que celui du thème parent.

Ce qui suit n'est pas hérité :

Veuillez noter que le sous-thèmes peuvent être placés aussi bien dans le dossier du thème de base comme à l'extérieur. Avant Drupal 6, les sous-thèmes devaient être placés dans un sous-dossier du thème parent.