2008 avr. 21
Par Olivier - Développement - Lien permanent
Maintenant qu'il est là, je me dis que ça manquait cruellement à Dotclear 2. Ce nouveau plugin permet donc de modifier son thème. Pas entièrement mais déjà les fichiers template, les feuilles de style et les fichiers javascript. Afin de vous expliquer comment tout ceci fonctionne, il n'est pas inutile de vous expliquer rapidement le fonctionnement du système de thèmes dans Dotclear 2.
Des templates un peu partout
C'est à la fois un point fort de Dotclear 2 et un des points compliqué pour les débutants ; il y a des templates un peu partout. Voilà comment ça fonctionne. Imaginons que le template fichier.html ait été demandé. Dotclear 2 va parcourir un certain nombre de répertoires jusqu'à le trouver. Ces répertoires sont les suivants :
- inc/public/default-templates/fichier.html
- themes/default/tpl/fichier.html
- themes/<montheme>/tpl/fichier.html
Le lecteur avisé notera qu'il cherche aussi dans themes/<montheme>/fichier.html. Ceci est une mesure de transition pour que les thèmes actuels fonctionnent encore tous mais il y a des grandes chances que les templates des thèmes aient à se trouver dans le répertoire tpl du thème et nul part ailleurs. Fin de la digression.
Un plugin peut également ajouter un chemin à cette liste. Il l'ajoutera généralement au début. Par exemple, le plugin Pages ajoute une recherche dans son répertoire default-templates.
L'éditeur de thème dans tout ça
L'éditeur de thème, pour sa recherche de templates, va procéder de la même manière, il va chercher tous les fichiers dans les répertoires sus-nommés et également dans les répertoires default-templates des plugins. À la fin du processus il dispose d'une liste conséquente de fichiers que l'utilisateur va pouvoir choisir. Attention, l'explication va peut-être sembler compliquée...
Admettons que je dispose d'un thème sans templates, comme ça arrive souvent mais que je souhaite ajouter une information dans le footer. Je vais ouvrir mon éditeur de thème, choisir le fichier _footer.html et le modifier. Je clique ensuite sur "enregistrer" et c'est tout, mon footer est modifié. C'est aussi simple que ça.
Si vous avez bien suivi, mon thème n'avait aucun template et j'ai donc modifié le fichier _footer.html du thème par défaut. Et bien non ! J'ai ouvert le fichier en question du thème par défaut mais il a été enregistré dans mon thème en cours d'utilisation.
Pour résumer, l'éditeur de thème ne modifiera jamais de fichier dans le thème par défaut. Vous pourrez donc mettre à jour votre Dotclear sans vous soucier d'avoir modifié le thème par défaut. Tout est dans votre thème en cours d'utilisation. Bien sûr, il va de soit que le thème "default" n'est pas modifiable et qu'il faut donc créer un thème au préalable.
Les fichiers CSS et JavaScript
L'éditeur de thème permet également d'éditer les fichiers CSS et JavaScript se trouvant à la racine du thème en cours d'utilisation. Ils seront enregistrés au même endroit dans ce cas là, sans tour de magie :)
À venir
Dans un avenir assez proche ce plugin devrait permettre de créer un nouveau thème à partir du thème par défaut, en copiant uniquement les fichiers nécessaires. Ça me semblerait assez idéal :)
Voilà, vous savez tout, tout ceci est disponible par défaut depuis la révision 1738. Et bien sûr, déjà dans les nightly. Vous être invités à tester :)
Commentaires
Bon boulot !
Super les gars, j'ai vraiment hâte de mettre DC2 sur mon site !
Incroyable, ça avance au rythme de un plugin par jour. Il faut se reposer aussi ;-)
Sinon, question hébergeurs de blogs, pourront-ils gérer convenablement tout ceci ? Je suppose que oui, pourquoi pas après tout. Mais je me demande cependant si les fichiers template modifiés n'avaient pas plutôt leur place dans le dossier public ? Autrement, il faudrait autant de copies de thèmes que d'utilisateurs de la plateforme.
À part cela, je peux noter que le positionnement de #file-box est tel que l'élément passe par dessus l'élément #file-chooser, ce qui rend impossible la sélection d'autres fichiers. J'ai vu le coup de margin-right négatif, mais ça n'a pas l'air de marcher sous Firefox 2.0.0.11.
C'est superadmin uniquement pour le moment, donc pas pour une plate-forme. Plus tard peut-être.
Je vais changer l'ordre des éléments, c'est pas logique comme ça.
Très très très bien :)
Merci.
Le dépôt subversion va finir par prendre feu !
Quel sera le prochain plugin ? cette fois-ci car je n'ai pas vu mention dans les commentaires d'une piste ?
Sacha : il faut enlever overflow:hidden; dans style.css. (Olivier je t'ai envoyé 3 mails à ce sujet :)
Perso, je ne vois pas l'intêret d'un tel plugin. Il vise à modifier les templates directement en production ce qui est une mauvaise chose et une mauvaise pratique. Toute modification doit être testée en local puis reportée en prod.
C'est une question de contexte :) Il y en a qui sont bien contents de pouvoir modifier rapidement un petit fichier sans avoir à ouvrir un client FTP, télécharger, puis remettre le fichier ensuite. Quand je veux modifier quelque chose, j'utilise sshmount, tout le monde n'a pas cette chance.
Dotclear est multiblog, rien n'interdit d'avoir un blog de test, d'y appliquer un thème qu'on développe pour ensuite en faire le thème du blog en prod. Il paraît même qu'il y a des gens qui se moquent de faire des pâtés en production ;)
Moe, merci, c'était ça :)
Après usages, J'ai une petite requête (ou deux) pour ce plugin:
¤ Pourrait-on avoir un moyen d'identifier rapidement les fichiers (template,js ou css) qui sont déjà présents dans le répertoire du thème en cours ?
Aujourd'hui on voit une liste des fichiers disponibles dans les 3 répertoires cités ci-haut sans distinction de la localisation du fichier.
¤ Est il envisageable de pouvoir supprimer un fichier (template par exemple) du répertoire du thème courant via cet éditeur? Je me rends compte que le fichier archive.html présent dans mon thème n'apporte rien de plus que le fichier template par défaut (du thème par défaut), je souhaite le supprimer. -> Je suis obligé de passer par mon client ftp ou ssh pour supprimer le dît fichier.
¤ Corrolaire, je souhaite ajouter des effets (strasses, paillettes et lumières) en javacript pour mon thème mais il n'en comporte aucun... Même punition, je dépoussière mon client ftp/ssh pour créer mon fichier.
¤ J'ai l'habitude de ranger mes fichiers JavaScript dans un sous répertoire 'js' dans mon thème, je ne peux pas y accéder via l'éditeur - dommage :(
Si je devais choisir une feature request à prendre en compte, je choisis la première de cette liste :), le reste je pourrais m'en accommoder.
Et merci pour la suppression du {overflow:hidden}, c'est plus confortable ainsi :)
bon tester ce matin et prometteur.
mais j'ai des questions requêtes.
1/ Quels droit minimum de chmod doit on avoir pour modifier les fichier du thème par le plugins.
il semblerais que 666 soit le bon pour les fichiers ??
2/ Pourrais t'ont rajoutée le chmod nécessaire a la fin de cette phrase dans ce cas la "Ce fichier ne peut pas être modifié. Veuillez vérifier les permissions des fichiers de votre thème."
3/ les .css même en chmod 777 apparaisse vide dans la boite , pourquois ??
4/ Si le nouveau dossier tpl manque ont tombe sur une erreur sans préciser le manque de ce dossier tpl. pourtant les deux autres thèmes n'ont pas de tpl ??
Je me répond ^^ manque juste le dossier thème a mettre en 777 et le dossier tpl ce créer tout seul.
5 / n'est t'il pas dangereux d'avoir finalement autant de dossier en chmod 777 ???
voila je continus mes tests sur le rc1739
Pour faire suite au message de Renard Blanc et les fichiers CSS, j'observe également la curiosité suivante:
J'ai un fichier vide lorsque j'ouvre le fichier layout.css présent à la racine du thème. Si j'ouvre le fichier style.css, je vois son contenu.
Les deux fichiers sont evidemment non vides et ont les mêmes droits : rw-rw-rw-
Le répertoire du thème a les droits rwxrwxrwx.
Je confirme que les fichiers template présents à la racine du thème en cours ne sont pas détectés par l'éditeur. Uniquement ceux présents dans le sous-répertoire /tpl/
Allez, j'ajoute encore une feature request :)
Je pense aux développeurs de thèmes, il leur serait vraiment utile de modifier le fichier _define.php afin de faire évoluer le numéro de version (notamment).
Packagé, le fichier zip du thème contient le numéro de version.
Je sais que nous avons que la première version du plugin et c'est déjà une très belle version.
Du coup j'ouvre un fil dans le forum et j'essaie de faire une synthèse des remarques.
Olivier, est-ce que les thèmes que nous avions réalisé sont toujours valables et marchent toujours (pour l'emplacement) ou devons nous revoir de A à Z la conception de nos thèmes ?
Jean-Michel, la seule chose normalement nécessaire est de déplacer ses templates dans un répertoire nommé "tpl". Le reste devrait fonctionner. Ceci dit, il n'est pas inutile de jeter un oeil à ce qui a changé dans les templates et éventuellement d'appliquer les changements.
Olivier > Ouf ! Néanmoins j'adore cet éditeur de thème vraiment très pratique et facile, je l'attendais ! Je vais pouvoir motiver certaines personnes de mon entourage à utiliser Dotclear.
Une adaptation pour le projet Dotclear 1 est en prévision ?
Et sinon... un éditeur de thème wysiwyg, comme pour tous les autres moteurs, ce serait pas aussi simple, pour les utilisateurs qui ne sont PAS des ingénieurs en informatique ?
Le codage, on comprend pas forcément.
Et sinon, tu as essayé une autre technique que la récrimination agressive pour obtenir la réalisation de tes souhaits ?
Et le coup de l'éditeur de thème wysiwyg dans tous les autres moteurs... j'en ris encore. :-D