Salut,
Fil a écrit :
(...)
Une autre (meilleure) méthode serait de faire une inclusion "inline",
c'est-à-dire qui stockerait le fragment dans le cache de la page principale.
Mais ça n'existe pas encore dans SPIP. Mon idée c'est que les
INCLURE{fond=xxx} devraient être "inline", tandis que les INCLURE(xxx.php)
seraient comme maintenant. Mais c'est post-1.9 
juste une reflexion "fonctionnelle" la dessus car j'use et j'abuse de l'inclusion depuis un moment maintenant.
J'utilise sur mes developpements (1.8) plusieurs scripts pour les inclusions.
J'ai une version de page.php3 à la racine et une autre dans /squelette
La premiere est le controleur(point d'acces unique), la seconde n'est pas accessible directement et peut s'appuyer sur des informations fournies par le controleur (autorisation, variables d'environnement, chemin des squelettes ...)
Mais la seconde (bloc.php3 chez moi) est declinée en plusieurs versions selon les usages.
J'ai donc aussi un bloc_perso.php3 qui ajoute l'id de l'utilisateur au contexte, un bloc_statut, et au besoin, un bloc_xxx correspondant à une variable xxx d'environnement définie au niveau du controleur.
Mais les fameux blocs inclus (noisettes ou autre gadgets) manquent finalement d'autonomie et j'ai tendance rapidement à faire des formulaires.
On maitrise parfaitement le contexte en passant les parametres un par un en mais c'est loin d'etre top au niveau de la maintenance
On perd beaucoup de l'interet des inclusions puisque l'ajout d'un parametre (genre pagination) va declencher des modifs en cascade.
Normal dans un sens puisqu'on change "l'interface" ... mais si on regarde le cas de la pagination, on se dit qu'il serait plus simple de pouvoir definir au niveau du squelette des variables d'environnement à aller chercher systematiquement
Je ne sais pas si c'est réalisable, mais il y a, amha, deux types de variables dans le contexte :
- celles definies par le contexte appelant (comme actuellement <INCLURE{xxx}>)
- celles definies par le fichier appelé (ce qui manque amha)
et dans les 2 cas, 2 contextes distincts :
- le contexte d'appel (get, post, variables d'environnement comme statut, id de l'auteur, url appelée ...) : on le fait aujourd'hui avec {xxx=#ENV{xxx}} mais l'environement est aujourd'hui le contexte d'execution ou, via #ENV, le contexte parent, qui peut etre different du contexte d'appel
- le contexte d'execution, ce qu'on fait aujourd'hui : {xxx} ou {xxx=#_boucle:BALISE}
Faire la distinction entre #ENV{xxx} et le variable xxx passée en GET ou POST ne me parait pas indispensable, mais quand on commence à avoir un peu de profondeur d'inclusions, ca simplifierait bien la vie de pouvoir mettre #REQUEST{xxx} sans avoir à passer xxx à tous les etages.
Pouvoir definir des variables au niveau du squelette, je ne sais pas comment ca peut se faire, mais je vois bien l'interet !
Quand on fait un squelette de menu ou un petit bloc d'affichage de breve, on le fait pour etre appelé dans un certain contexte.
Le plus important est en l'accès au contexte d'appel, ce qui est sans doute le plus simple à implanter.
Mais pouvoir definir dans le squette une "collecte" serait pas mal non plus.
Ca n'empeche pas de vouloir parfois passer d'autres parametres et il est evident que le contexte appelant prime, mais ca serait un vrai gain en maintenabilité et en portabilité des developpements.
mes 2 sous ...
@++
PS : bon, je me suis pas laché, j'ai pas parler de la definition intelligente du contexte...
