Un nouveau format : zip

Jusqu'à peu, les thèmes pouvaient être installés à partir de fichiers pkg.gz. Ce format vieillissant posait quelques limites dont celle d'être uniquement propre à Dotclear. Les thèmes seront donc maintenant installés à partir de fichier zip uniquement. Les thèmes pourront enfin être installés depuis l'interface d'administration.

Nouvel emplacement des templates

Les fichiers template se trouvant dans un thème devront être placés dans un sous-répertoire nommé "tpl". Les thèmes dont les fichiers se trouvent à la racine de celui-ci fonctionneront toujours mais uniquement jusqu'à la version finale. Pensez à mettre à jour vos thèmes en conséquence.

Un éditeur de thème intégré

Comme, j'en ai déjà parlé, il y aura un éditeur de thème intégré à Dotclear. Celui-ci permettra de facilement modifier les fichiers template, CSS et JS du thème en cours d'utilisation.

Les nouveau marqueurs

Dans un souci de cohérence, les marqueurs suivants ont changé :

  • tpl:EntryTrackbackCount devient tpl:EntryPingCount
  • tpl:EntryTrackbackData devient tpl:EntryPingData
  • tpl:EntryTrackbackLink devient tpl:EntryPingLink

Les anciens marqueurs continueront de fonctionner jusqu'à la sortie de la version finale, histoire de ne pas vous rendre complètement fous :)

Il y a aussi les fonctions template <SysIf has_tpl=...> et <SysIf has_tag=...> qui font leur apparition, et qui permettent aux thèmes utilisant des plugins particuliers d'afficher un texte alternatif si les fichiers de template ou des fonctions particulières n'existent pas.

Par ailleurs, la fonction "Se souvenir de moi" a complètement changé d'implémentation. Vous prendrez soin de vérifier que le template _head.html contient bien au moins le code suivant :

<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.js"></script>
<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/jquery.cookie.js"></script>

et que post.html, contienne également dans son en-tête :

<script type="text/javascript" src="{{tpl:BlogThemeURL}}/../default/js/post.js"></script>

Des événements intégrés aux templates

Le système de behavior que l'on trouvait principalement dans l'administration du blog commence à être intégré dans les templates. On trouve donc les événements suivants dans le thème par défaut

  • publicEntryBeforeContent
  • publicEntryAfterContent
  • publicHeadContent
  • publicTopAfterContent
  • publicFooterAfterContent
  • publicCommentBeforeContent
  • publicCommentAfterContent
  • publicPingBeforeContent
  • publicPingAfterContent
  • publicCommentFormBeforeContent
  • publicCommentFormAfterContent

Pour ceux qui comprennent, les fonctions propres à ces événements auront toutes comme arguments $core et $_ctx.

Ces événements permettent, par exemple, à un plugin de proposer des interactions dans le thème sans qu'il soit nécessaire d'aller y ajouter quoique ce soit.

Un nouveau thème par défaut

Enfin, le thème par défaut a changé. L'ancien, blueSilence, est conservé et la transition, au moment de la mise à jour sera assurée.

Ce nouveau thème dispose d'une nouvelle fonctionnalité plus qu'intéressante : il peut être configuré. Vous pourrez choisir les couleurs, les polices de caractères, les tailles de texte de nombreux éléments. Vous pourrez aussi changer l'image du haut de page comme bon vous semble. Et, cerise sur le gâteau, vous pourrez partager vos configuration de thème avec d'autres personnes, sur des forums ou où bon vous semble.

Conclusion

C'est assez simple :

  1. Vous avez fait un thème sans toucher aux templates (uniquement des images et des CSS) : vous n'avez rien besoin de changer.
  2. Vous avez fait un thème en modifiant les fichiers template : prenez le temps d'adapter vos templates.

Ces changements peuvent vous sembler ennuyeux. Croyez-moi, il était nécessaires et permettront d'offrir une bonne stabilité au système de thèmes de la version finale.

Merci aux membres du forum qui ont spontanément fait une liste des changements, ça m'a beaucoup aidé à rédiger ce billet.

Note: il n'est pas impossible que la fatigue me fasse écrire des bêtises et que ce billet soit complété et/ou corrigé plus tard :)