Bonsoir,
Bon, ma dernière est question est restée sans réponse, mais j'ai avancé dans ma compréhension
du problème. Alors je re-tente ma chance ;o)
J'ai défini une balise dynamique #TOTO, dans squelettes/balise/toto.php, avec ceci:
function balise_TOTO($p) {
error_log("balise_TOTO()");
return calculer_balise_dynamique($p, 'TOTO', array());
}
function balise_TOTO_stat($args, $filters) {
error_log("balise_TOTO_stat()");
return $args;
}
function balise_TOTO_dyn() {
error_log("balise_TOTO_dyn()");
return date("c");
}
Si cette balise est invoquée depuis un squelette, tout marche comme prévu: au premier accès,
compilation du squelette, avec invocation de balise_TOTO(), balise_TOTO_stat(), et balise_TOTO_dyn().
Lors des accès suivants, seul balise_TOTO_dyn() est invoquée.
Par contre, si cette balise est invoquée depuis un modèle, ou dans un squelette inclus depuis un modèle, ça déraille:
- au premier chargement, on exécute :
* balise_TOTO(),
* balise_TOTO_stat(),
* balise_TOTO_dyn()
- au deuxième chargement, rien n'est exécuté: la valeur soit-disant dynamique est tombée dans le cache
- si on recalcule la page (var_mode=calcul), on exécute deux fois la balise dynamique:
* balise_TOTO_stat(),
* balise_TOTO_dyn(),
* balise_TOTO_stat(),
* balise_TOTO_dyn()
- et si on recalcule encore (var_mode=recalcul), c'est la totale, ça exécute :
* balise_TOTO(),
* balise_TOTO_stat(),
* balise_TOTO_dyn(),
* balise_TOTO_stat(),
* balise_TOTO_dyn()
Ces comportements sont pour le moins étonnants. Voici mes questions:
1) est-ce qu'il y a un explication au fait que la balise dynamique ne soit plus dynamique dans un modèle?
un contournement possible pour obtenir un comportement dynamique de la balise?
2) pourquoi ces doubles invocations de _stat et _dyn au recalcul de la page?
Merci de toute aide...
--
Florence HENRY
LESIA - Observatoire de Paris