2008 avr. 24
Par Olivier - Lien permanent
À une semaine du lancement de Dotclear 2.0 RC1, il n'est pas inutile de revenir sur certaines nouveautés introduites depuis la version 2.0 beta 7. Les billets de cette semaine vont apporter les éclairages nécessaires pour une mise à jour simple et sans encombre.
Aujourd'hui, nous aborderons les thèmes et les changements auxquels devront répondre les concepteurs de thèmes ou simplement l'utilisateur qui a personnalisé son thème.
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
devienttpl:EntryPingCount
tpl:EntryTrackbackData
devienttpl:EntryPingData
tpl:EntryTrackbackLink
devienttpl: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 :
- Vous avez fait un thème sans toucher aux templates (uniquement des images et des CSS) : vous n'avez rien besoin de changer.
- 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 :)
Commentaires
Exellent, bon boulot.
J'apprécie de plus en plus dc2, et le fait de généraliser le format zip, et surtout de rendre les thèmes et différents plugins interdépendants vont pas mal simplifier l'ajout de plugins.
Maintenant, ça me parait commage de voir toujours plus de plugins "novateurs" apparaitre pour dc1 , et pas de version dc2.
Bon, je comprends que, le code de dc2 n'étant pas encore "stable" , ça ennuie un peu les devellopeurs de plugins, mais bon, du coup on ne peut pas tester ces plugins sous dc2. (je pense en particulier à Openid et pdf4dc)
Merci au DC crew :)
J'ai hésité quelques jours avant de porter le plugin Dotmap de DC1 à DC2 : version beta est parfois synonyme de bug, non stabilité, changement de code...
Finalement j'ai franchi le pas. Je tourne sous DC2 b7 depuis 1 an, sans soucis, et le plugin dotmap tourne parfaitement, même sur les snapshots les plus récents. Il faut juste que les développeurs franchissent le pas et portent leur code sous DC2, ça n'est pas si compliqué finalement.
Pour ceux qui ont dans leur thème un fichier post.html spécifique, il faut également ajouter le bout de Javascript suivant pour que l'option "se souvenir de moi" fonctionne :
<script type="text/javascript">
//<![CDATA[
var post_remember_str = '{{tpl:lang Remember me on this blog}}';
//]]>
</script>
Je cherche encore où est situé le user_head , puisque je compte faire utiliser à ma copine les services d'un proxy/compteur rss (feedburner pour les intimes).
Mais moi pas fou : moi avoir créé alias pour pouvoir changer à tout moment :)
>Da Scritch :
A toi de le placer dans /themes/default/tpl/user_head.html
ou dans le /themes/ton_theme/tpl/
Mais dans le second cas, je crois bien qu'il te faille aussi un _head.html dans /themes/ton_theme/tpl/
Toi voir ? ;)