Le 01/10/2019 à 12:30, JLuc a écrit :
J'ai l'impression qu'il y a un pb avec le plugin creer_sprite_css
car il vide le buffer des sprites dans le pipeline recuperer_fond
pour créer le sprite avec les images collectées à ce moment là.

Or la compilation de SPIP est un processus complexe
qui nécessite des appels imbriqués lorsqu'il ya des inclure dynamiques ou 
statiques.
Il peut donc se produire plusieurs appels à recuperer_fond
avant que le recuperer_fond du squelette courant ne soit effectivement appelé.
Or le buffer des sprites est une variable globale
qui est donc vidée par les pipelines recuperer_fond des inclusions.

Avec SPIP3.3 dev en plus, la nouvelle gestion des logos provoque un 
recuperer_fond
qui, j'ai l'impression, ne se faisait pas avant (cf liste dev).
C'est un cas particulier d'inclusion, car implicite.

Du coup j'ai patché le pipeline de creer_sprite_css pour ce cas là :

function creer_sprites_recuperer_fond ($flux) {
     if (isset($flux['args']['fond']) and ($flux['args']['fond'] == 
"modeles/logo")) {
         return $flux;
     }
     return creer_sprites($flux);
}

Mais il reste tous les autres cas d'inclusions.

En plus avec les squelettes Z et autres bien découpés,
il inconcevable d'exiger de créer les sprites au niveau d'une noisette seulement
car souvent il n'y aura qu'un seul logo dans une telle noisette,
alors que justement on veut mettre tous les logos dans un sprite.

Il faudrait donc déplacer ailleurs l'appel à creer_sprite.

Ne l'appeler qu'une seule fois tout à la fin du calcul de la page ?
Dans affichage_final, donc.

JL

----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Répondre à