Dans la série "je déterre le sujets", pouf information les échanges évoqués
par Anne. :)
---------- Message transféré ----------
De : Dsls <dsls(a)morefnu.org>
Date : 28 juin 2011 13:06
Objet : Héritage de templates suite
À : Dotclear Bazar <bazar(a)list.dotclear.net>
Je reprends depuis le début. Oubliez le thème blowupRevisited tel que
je l'ai proposé, c'était une erreur d'approche de ma part, j'aurais du
discuter sur le fond avant de montrer la forme.
On commence par les thèmes actuels, et comment les thémeurs les réalisent :
1. On crée un fichier de layout global, dont on extrait un _top, un
_footer, un _head, une éventuelle sidebar
2. On crée à partir de ces éléments un home.html, intégrant les
fichiers ci-dessus
3. On duplique home.html en category.html, qu'on adapte un peu
4. On duplique home.html en tags.html, qu'on adapte un peu
5. On duplique home.html en search.html, qu'on adapte un peu
...
153. On duplique home.html en post.html, dont on enlève la boucle, on
adapte un peu plus
153. On duplique post.html en page.html, qu'on n'adapte presque pas
154. On duplique home.html en 404.html, tags.html et autres fichiers
spécifiques, on enlève la boucle qu'on remplace par le contenu qu'on
souhaite
Maintenant, je veux ajouter une class au div content ? J'adapte
home.html, puis category.html, puis tag.html, puis ...
Je trouve ça très con. 90% du même code html se retrouve dans tous les
fichiers template. Qu'on ajoute des include ou pas, le squelette de la
page apparaît dans chaque template.
Alors que, une page, c'est dans l'ordre:
1. Un squelette, définissant ou on va mettre le contenu (listes,
billet, tags, ...), et les gadgets autour (widgets, top, header,
footer, liens, ...)
2. un contenu, type liste d'éléments dans la zone correspondante du
squelette
3. un contenu, type billet dans la zone correspondante du squelette
4. un contenu, type "libre" dans la zone correspondante du squelette
Et je pense que dans cet ordre, c'est globalement ce que font les
designers de thème.
D'où ma proposition :
* On définit un "layout.html" qui présente le squelette de la page
* On définit un "list.html" qui va présenter le squelette des pages
avec pour contenu liste
* On définit un "single.html" qui va présenter le squelette des pages
avec un simple contenu
list.html va dire : "reprends la même chose que layout.html", mais
remplace la zone "contenu" par ça
single.html va dire : "reprends la même chose que layout.html", mais
remplace la zone "contenu" par ça-bis
Ensuite :
* category.html va hériter (puisque c'est vraiment le terme) de
list.html, en décrivant uniquement le contenu qu'elle spécialise
* et de même pour toutes les pages liste
* post.html va hériter de single.html
* ...
Pour définir les zones du squelette, twig utilise la notion de bloc,
que j'avais reprise dans blowupRevisited. Chaque bloc est nommé, il
suffit alors à la page fille de redéfinir le contenu d'un bloc ayant
un nom donné.
--
Bruno