Bug de génération de boucle avec les modèles Spip
Dans les modèles personnalisés Spip, les images (boucle documents ou logos) sont mal générées et provoque un bug d'encodage visible dans le front-end lors du passage dans une autre langue (balises multi). Nous n'avons pas trouvé où était le souci dans Spip, mais les caractères qui remontent dans le code source, ressemblent aux octets qui composent le fichier binaire d'une image. Voir en live ici: http://spip-dev.nidecker.com/probleme-de-langue.html?lang=ca.
Pour essayer d'isoler cette anomalie, nous avons procédé de la sorte avec l'aide de mon développeur:
- Nous sommes reparti d'un SPIP 3.1.7 entièrement neuf (minimal), avec deux modèles Spip, rien d'autre. Le bug se reproduit, ce qui exclus un problème lié aux squelettes ou autres plugins.
Nous n'avons pas réussi a déterminer précisément ce qui génère ce bug, à part que c'est dans un contexte où on appelle une langue pas définie dans le multi. En fonction du contenu de l'article, du nombre de modèles dans l'article, en fonction des boucles dans les inclure, le bug n'arrive pas au même endroit...
Le problème vient de la génération des logos ou documents : si on supprime les balises #LOGO_*
ou si on renomme IMG
en IMG_
, plus d'erreur.
Même sans traitements, avec juste [(#LOGO_*)]
, rien à faire.
-
Nous avons pensé que c'était peut être une image au mauvais format: On a alors tenté de passer
ImageOptim
sur tout le répertoire/IMG
, redimensionné tous les logos en vignettes png de 320x240, rien à faire... -
On a fini par passer ce site de test en 3.2, pas mieux.
-
Nous avons épluché les caches générés dans
/tmp/cache
et/tmp/cache/skel
, tout paraît normal de ce côté là.. -
On a ensuite un peu avancé en enlevant dans
mes_options.php
la variable$GLOBALS['forcer_lang'] = true
". Sur la version minimal, plus de bug. Mais sur le site de production, le problème réside toujours. Mais en faisant des tests avec et sans (et en supprimant bien/tmp/cache/
à chaque fois), ça se confirme pour la version minimal. -
A partir d'une copie de la version production, nous avons désactivé tout les plugins, passer
ImageOptim
sur/IMG
et rien a faire.. Impossible de déterminé d’où vient le problème :( -
Nous avons essayé d'écrire comme ceci:
[<img src="(#LOGO_MOT|image_reduire{50,*}|extraire_attribut{src})" alt="">]
Cela fonctionne sur la version minimal mais pas sur la version production. -
Dans la version minimal, j'ai encore récemment testé une dernière chose. J'ai supprimé les documents non sollicités sur ma page de teste (spip.php?article1441&lang=ca). Avec la requête SQL suivante:
DELETE FROM jones_documents WHERE id_document NOT IN (1948,1949,2534,2535,630,631,1783,1784,1785,1786,1787,1788,1781,1782)
Le bug n'apparait plus..
Je sèche..
Vous trouverez ici en téléchargement une archive de la version minimal (Spip 3.1.7): https://www.dropbox.com/s/dek0zg7jafl8uxe/jones.zip?dl=0] (~20mo) Pour reproduire le bug, il suffit de passer la variable "&lang=ca" dans l'article 1441 (localhost/spip.php?article1441&lang=ca).
Je donne volontiers un accès à la version production si besoin.