Je pourrais vous la faire courte, mais je suis d'humeur joueuse et donc... pénible.
Posons d'abord le contexte
Profitant des mois d'été pour doter Turbinagaz.com d'un vrai site, j'ai mis à plat l'existant et pris le temps de tranquillement mettre sur papier ce que je voulais en faire et comment j'envisageais de faire évoluer la chose.
L'observation a rapidement abouti sur quelques faits indiscutables :
- Le premier constat était le plus évident et le moins flatteur. Il peut d'ailleurs se résumer dans la réaction suivante :
Rha la vache ! C'est le bordel, là dedans !
- Rapidement, après une première séance de tri pourtant assez sommaire, j'en arrivais à :
Pourtant, il n'y a pas grand chose...
- Et pour compléter le tableau, une séance de fouilles archéologiques et une analyse des soubresauts m'ont amené à cette conclusion sans appel :
C'est clair que ça ne bougera pas beaucoup, ni souvent. Et que ça se fera par périodes, de toute façon.
Ce n'est donc qu'un secret de Polichinelle : le Turbinagaz.com de la rentrée ressemblera plus à un site conventionnel qu'à un blog pur et dur. Le peu d'actualité des lieux étant lié à l'actualité des plugins développés, elle-même souvent liée à l'actualité de Dotclear, il ne faut pas s'attendre à de la publication hebdomadaire[1]
Je vais plutôt me retrouver à devoir maintenir plusieurs sections très proches du statique : les fiches de plugins et les éventuelles documentations de ces derniers, quelques articles de fond au gré de mes pérégrinations au sein du code de Dotclear, et autres choses du même acabit.
En y réfléchissant bien : même si tout ce petit monde pourrait s'accommoder des fonctionnalités de Dotclear (sous-catégories, pages, voire pages related), ce ne serait pas sans une bonne dose de gymnastique.
C'est au moment que je m'y résignais et je commençais à pleurer de ne pas le faire avec Django[2] que le déclic s'est produit...
L'idée saugrenue
Pour ceux qui ont un peu approché Django, je pense que le nom flatpages
parlera à beaucoup. Précisons tout de même un peu pour les autres : flatpages
est une application Django, fournie d'origine avec le framework, permettant de créer très facilement des pages statiques tout en profitant de la mécanique sous-jacente (cache, langage de template, etc.).
Son utilisation et sa mise en œuvre sont des plus simples : depuis l'interface d'administration, on demande la création d'une nouvelle flatpage
, on précise l'URL qu'on souhaite lui associer et - cerise sur le gâteau - on peut, si on le souhaite, indiquer qu'on utilisera un template spécifique pour cette page-là. Et le tour est joué ! Pas de gestionnaire à définir, pas de code ou de redirection à écrire, tout se fait naturellement en coulisses.
Ah, mais... dites-moi... Ça ne vous rappelle pas un peu quelque chose cela ?
Si, si. Réfléchissez bien.
Une page hors flux chronologique, dans Dotclear ? Au choix : Pages
ou Related
[3]. Ok. Avec un template différent pour chaque page si on le désire ? Mouaip. Partiellement avec les récentes versions de Related
[4]. Il reste encore cette histoire d'URL. Dans l'absolu, ce qui serait sympa, c'est une URL sans préfixe. Ça, par défaut, ce n'est pas le fort de Dotclear. Il faut souvent se résoudre à mettre les mains dans le cambouis et/ou installer le plugin supplémentaire Alias
. Avouons-le: ce n'est pas bien méchant et surmontable. C'est juste un peu moins pratique et intuitif.
En tout cas, on sait déjà une chose : on a quasiment tous les éléments en main avec Dotclear et quelques plugins pour reproduire les flatpages
de Django. Ajoutons donc dans les ingrédients les changements bienvenus de la version 2.2 de Dotclear : un gain de contrôle sur ce qu'il est possible de faire en terme de gestion des erreurs.
Cette fois, on a tout le nécessaire[5], non ? Tout le reste, c'est du détail, de la glu et de l'huile de coude.
Le croisement génétique
Si vous avez lu jusque là, vous savez maintenant où je veux en venir. Il est donc temps pour moi de cracher ma Valda
et d'annoncer la venue au monde d'un nouveau plugin pour Dotclear 2.2. Il s'agit donc d'un plugin hybride reprenant des gènes à Pages
, à Related
et bénéficiant des nouveautés de Dotclear 2.2 pour se passer du recours à Alias
.
Pour le nom, pas la peine de se casser la tête, dites simplement bonjour à flatPages
. :)
Pour l'heure, soyez indulgent avec cette petite bête :
- Elle est issue d'assemblages réalisés à la va-vite, plus dans l'idée d'un
Proof of Concept
que d'un plugin rôdé pour la production. - Ce n'est donc que toute la première version alpha et je propose très tôt en téléchargement[6]
- Le gros du mode de fonctionnement semble opérationnel, mais il manque de sérieuses séances de polissage et finition, tant au niveau de l'interface que du code source.
Néanmoins, le plugin devrait rapidement se diriger vers un stade beta
puisque je compte bien l'utiliser comme (quasi) clé de voute pour la prochaine mouture de turbinagaz.com. En l'état, il fait déjà ce qu'on attend de lui, mais il sait également cohabiter avec quelques proches : il se signale donc auprès de Sitemaps
[7].
Comme on parle bien ici de version alpha
, n'attendez pas la moindre documentation avant un moment.
Pour les plus curieux et/ou téméraires d'entre vous :
- N'hésitez pas à télécharger le plugin, à l'installer et à l'essayer.
- Si vous avez des questions ou des idées, posez les en commentaires de ce billet.
- Si vous rencontrez des problèmes, signalez les sur GitHub.
Et puis... si vous pensez réellement que l'idée est débile et inutile, faites m'en part également.
:)
EDIT 29/07/2010 : le lien de téléchargement pointe désormais sur le package d'une version alpha2.
Notes
[1] Et encore moins quotidienne... Z'êtes pas un peu fou, non ?!
[2] Ben oui, devinez ce qui m'a occupé et passionné ces derniers mois ? :)
[3] Il y a sans doute d'autres plugins fournissant ce type de fonctionnalités.
[4] En fait, on peut choisir un template personnalisé qui viendra s'insérer au sein d'un template de base, sur lequel on n'a guère de contrôle au final. Enfin, disons que ça manque de souplesse et de finesse de grain.
[5] Ou presque : le moteur de templates de Django gère l'héritage entre templates, ce qui manque cruellement à Dotclear, surtout une fois que l'on a gouté à cette puissance-là.
[6] Ça change...
[7] Afin de faire figurer ses URLs dans la liste soumise à Google.
Commentaires
#1
Franck
mardi 27 juillet 2010, 20:08
Miam \o/
#2
julien
mardi 27 juillet 2010, 20:13
Bon, déjà la remarque obligatoire : tu parles d'une refonte pour la rentrée... mais c'est bien, tu ne précises pas l'année, on ne va donc pas pouvoir te reprocher le (inévitable) retard ! ;-)
Plus sérieusement : on en a déjà discuté à l'époque, mais je ne comprends toujours pas l'intérêt de l'héritage de templates. Aurais-tu l'amabilité de développer ? (Car non, sans un cas concret à réaliser, je ne vais pas me lancer dans la découvere de Django... je préfère passer mon temps libre à d'autres choses. ;-) )
#3
Pep
mardi 27 juillet 2010, 22:43
Pour la rentrée, j'ose : 1er septembre 2010, pour la deadline. Et je ne te cache pas que j'aimerais bien boucler cela avant. Évidemment, je te laisserai te moquer en cas de retard.
Pour l'héritage, je parle bien de celui qu'on a dans Django. Un template peut en spécialiser un autre, de la même manière qu'on le ferait avec une classe dérivée en code. Ainsi, tu n'as pas tout à reprendre mais simplement à définir le comportement spécifique.
Je ne vois pas trop comment t'expliquer cela d'une meilleure manière. Sauf, peut-être, à publier des exemples concrets, mais... sur un site dédié à Dotclear, ça risquerait de faire mauvais genre. :)
#4
mirovinben
mercredi 28 juillet 2010, 07:00
Ca donne envie... J'espère juste que ça ne va pas abréger la vie de "related page" qui me sert beaucoup.
A moins qu'une migration en douceur avec reprise des URL (avec le mignon "static" dedans) soit envisageable.
#5
Pep
mercredi 28 juillet 2010, 09:05
La disparition de Related n'est pas à l'ordre du jour. Pas de souci à avoir. :)
#6
Osku
mercredi 28 juillet 2010, 12:07
Mouais mouais...
Je fais la même chose avec Muppet + Templator (tiens ça me rappelle qqch.. :-p ) + Alias.
Ceci dit, c'est une idée absolument géniale et merci de l'avoir mis en œuvre.
J'ai jeté un oeil très vite fait à ce que tu comptes faire pour la gestion du template associé. Tu stockes semble-t-il la valeur du ficher tpl à utiliser dans le meta
template. Au niveau affichage admin, je pressens un doublon d'affichage sur le choix du template.Encore bravo :)
#7
Pep
mercredi 28 juillet 2010, 13:15
Gné ?
Je n'ai pas trop saisi ton histoire de doublon d'affichage.
Tu peux préciser un peu, stp ?
#8
Osku
mercredi 28 juillet 2010, 13:18
Forcément si j'oublie un bout....
Donc doublon d'affichage si templator est actif sur le blog courant.
#9
Pep
mercredi 28 juillet 2010, 13:33
Ah oui, c'est tout de suite plus clair. Merci. :)
#10
Pep
jeudi 29 juillet 2010, 11:52
Package d'une version 1.0-alpha2 disponible.
La prise en charge de la protection par mot de passe et des commentaires sur les flatPages est désormais opérationnelle.
Il reste à revoir un peu la partie administration du plugin pour engager le cycle des versions beta.
#11
Philippe
jeudi 29 juillet 2010, 20:42
Un instant j'ai eu peur : j'ai cru que tu étais tombé (aussi) dans Django :D
#12
Pep
jeudi 29 juillet 2010, 22:51
Ah mais je suis tombé (aussi) dans Django ! Faut pas croire.
Je ne considère simplement pas les 2 comme étant mutuellement exclusifs. Et leurs finalités divergent également.
:)
#13
mirovinben
vendredi 30 juillet 2010, 08:56
Ce qui serait 'achment bien c'est de pouvoir insérer des marqueurs de template dans l'extrait et le contenu.
J'ignore si c'est possible aisément (créer le mécanisme, pouvoir l'utiliser en wiki) et ne risque pas d'engendrer des effets de bord si mal utilisé...
C'est cette possibilité et celle d'accepter l'inclusion de fichiers indépendants (éventuellement communs à plusieurs blogs d'un multiblog, comme chez moi pour la partie "infos" de la sidebar) qui donnent tout leur sel à related.
Content qu'il reste en piste.
#14
Pep
vendredi 30 juillet 2010, 14:18
Ce que tu proposes pourrait sans doute être réalisable (au fond... qu'est-ce qui ne l'est vraiment pas ?).
Par contre, je ne suis pas certain que ce soit souhaitable et d'ailleurs, à titre personnel, je ne le souhaite pas.
Je préfère me contenter d'un plugin simple à mettre en œuvre et sans risques de mauvaises surprises éventuelles en exploitation.
#15
Dsls
jeudi 12 août 2010, 17:21
Héhé, l'héritage de templates, je l'ai proposé là-bas : http://forum.dotclear.net/viewtopic...
Avec une proposition de thème qui le met en oeuvre : http://www.morefnu.org/public/archi...
Et bizarrement, la balise qui gère l'héritage est tpl:Block, directement inspirée de django :)
#16
Dsls
jeudi 12 août 2010, 17:22
Sinon, moi j'dis : avec un plouga et un pep qui regardent à peu près au même moment du coté de django, c'est louche. Ils nous prépareraient pas un p'tit pydotclear dans un coin ? ;)
#17
Pep
jeudi 12 août 2010, 23:15
Simple(s) coïncidence(s), si tu veux mon avis. :)