Bonjour,
Ce problème, je ne sais pas si c'est un « bug » ; plus probablement c'est que j'essaie de faire quelque chose qu'il ne faudrait pas faire comme ça ...
Dans un modèle j'ai besoin de créer un tableau (array) de langues qui étend/corrige/surcharge la liste fournie par SPIP dans ecrire/inc/lang-liste.php
Alors je fais ceci :
$iso639 = array(
'an' => 'Ao-Naga',
'hl' => 'Hiligaynon',
'ib' => 'Iban',
'il' => 'Ilocano',
'pm' => 'Kapampangan',
'tm' => 'Tetum',
'cy' => 'Cymraeg (Welsh)'
...
);
$iso639 = array_merge($GLOBALS['codes_langues'],$iso639);
etc.
Lorsque la page qui utilise le modèle (qui est appelé par #MODELE dans le squelette) est calculée la première fois, cela marche.
Mais lorsque la page est en cache $GLOBALS['codes_langues'] ne donne rien, et le tableau $iso639 est donc vide.
J'étais content de lire (http://www.spip.net/fr_article3454.html), « dans un modèle comportant du php, c’est le résultat du calcul qui est mis en cache, et non le script lui-même », car c'est ça que je veux.
Pour l'instant, je contourne la difficulté en ajoutant dans le modèle toutes les lignes que je veux depuis lang-liste.php, et mettant le array_merge en commentaire.
Vaut-il mieux abandonner l'idée de lire $GLOBALS['codes_langues'] depuis un modèle ?
Paolo