[spip-dev] Patch styliser_par_z pour des dist-composition

Salut,

quand je crée des compositions, je dois souvent dupliquer des squelettes déclinés par objet pour la même composition, exemple :

footer/article-compo.html
footer/rubrique-compo.html
etc...
avec la plupart du temps article-compo qui contient juste <inclure{fond=footer/rubrique-compo}>, car ce sont les même contenus.

J'ai un patch qui permet de créer un fichier dist par composition :
footer/dist-compo.html

Cf le patch :
http://spip.pastebin.fr/56209

Le top serait en plus que ça ne nécessite pas la création d'un footer/article.html et footer/rubrique.html, qui ne sont pas utiles non plus, mais le patch serait un peu plus gros.

Caen pensez vous ?
Utile ? pas utile et je surcharge juste chez moi ?

Voilà, mieux :

http://spip.pastebin.fr/56211

pour une page article avec une compo, ça remonte footer/article-compo.html si footer/article.html existe, sinon ça remonte footer/dist-compo.html même si footer/article.html n'existe pas, sinon comme d'hab.

On peut donc avoir un dossier footer de ce type :

footer/dist.html
footer/dist-compo1.html
footer/dist-compo2.html

avec des squelettes bien distincts, au lieu de :

footer/dist.html
footer/article.html
footer/rubrique.html
footer/article-compo1.html
footer/rubrique-compo1.html
footer/article-compo2.html
footer/rubrique-compo2.html

avec des squelettes dupliqués ou qui s'incluent.

Pas sûr en fait, j'ai des boucles d'inclusions, c'est pas encore au point...

J’aime beaucoup l’idée… mais… il y a un poil de fourberie non ?

Ça sous-entend que tu sais que 'compo1' de article et de rubrique est équivalent, mais il me semble qu’il pourrait exister des cas où le nom de la composition de signifie pas la même chose ; du coup dist-compo1 deviendrait un peu ambigu.

Je n’ai pas d’exemple qui me viennent en tête cependant. Peut être que c’est juste fictif. Un artefact mathématique !

En même temps les compositions sont spécifiques au projet (je ne crois pas qu’un plugin fournisse de "content/article-galerie.html" par exemple) (et qu’un autre fournirait un content/rubrique-galerie.html) et donc, la responsabilité du nommage incombe à la personne qui gère les squelettes du site, et donc, dans ce cas, c’est une super feature :slight_smile:

Voilà pour moi.

Ça me parait utile, et j'ai déjà eu ce besoin. Dans le même genre,
j'avais fait ajouter "composition-trucmuche" dans les classes de la page
Z complète, pour qu'en CSS on puisse faire des styles communs, quelque
soit l'objet ou la page.

Par contre, l'histoire de rester dans le dossier qui contient
patate.html, c'est une histoire de performance à priori. Donc si ton
patch va chercher ailleurs quand il n'y a pas de compo directe, ça va
faire un all_in_path quand même, alors que c'est justement ce que
cherche à éviter le fait de rester dans le même dossier.

Moi non plus je n'aime pas spécialement, et j'ai eu aussi des cas où
j'avais mes compos ailleurs. Mais je ne sais pas si on peut faire
l'impasse sur cette attention à la performance.

Non, c'était juste un cache qui collait.
Je teste de plus en plus, et ça marche pas mal du tout.

A priori non, ça cherche juste un fichier $dir/dist-$composition.html

Cf dernière version (il y avait un glitch sur la précédente) :

http://spip.pastebin.fr/56212

Le top serait en plus que ça ne nécessite pas la création d'un footer/article.html et footer/rubrique.html, qui ne sont pas utiles non plus, mais le patch serait un peu plus gros.

J’aime beaucoup l’idée… mais… il y a un poil de fourberie non ?

Ça sous-entend que tu sais que 'compo1' de article et de rubrique est équivalent, mais il me semble qu’il pourrait exister des cas où le nom de la composition de signifie pas la même chose ; du coup dist-compo1 deviendrait un peu ambigu.

Oui, il y a plein de façons d'utiliser les compositions.

Je définis souvent des compositions qui génèrent des designs différents du site principal, des mini-sites en quelque sorte.
J'ai une composition machin-accueil, que j'applique à une rubrique et qui me fait une page sommaire, et qui définit une composition machin pour tous les articles et rubriques en dessous.
C'est donc surtout utile (pour moi) dans les répertoires communs à tous les objets (aside, header, footer) : j'y mets un dist-machin, et c'est fini.
Et plus besoin d'y coller artificiellement des article et rubrique.html

Ça va m'éviter de dupliquer des fichiers, et me faciliter du coup la maintenance.

Je n’ai pas d’exemple qui me viennent en tête cependant. Peut être que c’est juste fictif. Un artefact mathématique !

En même temps les compositions sont spécifiques au projet (je ne crois pas qu’un plugin fournisse de "content/article-galerie.html" par exemple) (et qu’un autre fournirait un content/rubrique-galerie.html) et donc, la responsabilité du nommage incombe à la personne qui gère les squelettes du site, et donc, dans ce cas, c’est une super feature :slight_smile:

Je continue à tester sous forme de surcharge, et ça passera surement en prod d'ici pas longtemps, sur un site avec pas mal de compositions, héritages, objets éditos etc.

Si ça vous semble intéressant, c'est dispo, mais je comprends que ça puisse paraitre trop spécifique.

A l'usage, j'ai trouvé un bug quand un dist-compo.html en inclut un autre en lui passant l'env

Exemple, header/dist-compo2.html avec juste <INCLURE{fond=header/dist-compo1,env}>

Ça tourne en boucle dans styliser_par_z et ça finit en dépassement de mémoire, il faut que j'arrive à trouver le bon test.