1
Indiquez l’intérêt que vous portez à cette question
0

Mise à jour de SPIPr en v.2 (retour d’expérience)

Je viens de passer quelques jours sur un dysfonctionnement lié à la mise à jour d’un site sous SPIPr. Maintenant que c’est corrigé, je souhaite faire part du souci rencontré et de la solution appliquée, en espérant que ça serve à d’autres.

Contexte

J’avais un site qui tournait initialement sous SPIP 3.1.3 avec SPIPr-dist v.0.4.15. J’ai effectué plusieurs mises à jour jusqu’en 3.1.10/SPIPr-dist v.0.4.16, puis je suis passé en SPIP 3.2 : d’abord 3.2.4 puis 3.2.7. Aucun problème à déplorer pendant tout ce temps, je suivais systématiquement la procédure « sécure » :
- sauvegarder la base ;
- mettre à jour tous les plugins le nécessitant ;
- refaire une sauvegarde au cas où...
- effectuer la mise à jour de SPIP.

Le site n’a pratiquement pas évolué depuis 2019 et je l’avais un peu oublié. Récemment, l’annonce de la version SPIP 3.2.9 m’a incité à l’appliquer. C’est là que les soucis ont commencé...

Problème rencontré

J’ai appliqué la même procédure que les fois précédentes, en commençant par mettre à jour les plugins. Je l’ai fait d’un bloc, en cochant tous les plugins concernés et en lançant ensuite la mise à jour. Tout s’est bien passé... du moins en apparence. L’espace privé s’affichait bien, sans aucun problème.

C’est en visualisant les pages publiques que j’ai vu le changement : mon menu principal de navigation, un menu classique "navbar" par secteurs, n’était plus disposé en ligne horizontale mais en liste à puces verticale, de même que le bloc "hierarchie". D’autres perturbations dans la mise en page montraient qu’il y avait clairement un problème de CSS. Mais j’avais beau vider le cache, recalculer les CSS, recalculer les pages, rien n’y faisait. J’ai effectué la mise à jour de SPIP en 3.2.9, sans problème supplémentaire mais sans amélioration non plus.

La mise à jour des plugins avait fait passer SPIPr-dist de la version 0.4.16 à la version 2.2.6, ce qui avait eu 2 conséquences majeures :
- Bootstrap était passé de la version 2 à la version 4 ;
- ce n’était plus LESS CSS qui était utilisé pour le calcul des styles mais SCSS PHP.

Je me suis dit dans un premier temps que ces changements rendaient caducs certains de mes styles et je me suis plongé dans perso.css pour essayer de corriger cela. Ce fut laborieux et peu convainquant.

En examinant de plus près les feuilles de styles utilisées (avec l’inspecteur de Firefox), je me suis rendu compte qu’il y en avait très peu. En comparant avec un autre site sous SPIPr-dist (qui fonctionnait, lui), j’ai vu qu’il en manquait plusieurs, et notamment aucune bootstrap*.

Le plugin LESS CSS, qui semblait désormais inutile, était toujours actif, je l’ai désactivé pour voir mais plus rien ne s’affichait en pages publiques. Je l’ai donc réactivé et tenté autre chose...

La solution

Le souci venait clairement d’un plugin : si je désactivais SPIPr pour revenir à la dist SPIP, l’affichage était normal et je retrouvais ma barre de menus horizontale. J’ai donc pris le taureau par les cornes :
- RAZ de mes modifs dans perso.css pour revenir à une situation clean. Ça marchait avant, ça marche sur d’autres sites, y’a pas de raison de faire des acrobaties inutiles pour essayer de réinventer la roue ;
- désactivation de tous les plugins jouant sur la mise en page : SPIPr-dist, Bootstrap, LESS CSS, SCSS PHP, Zcore, Menus, etc. ;
- réactivation uniquement de SPIPr-dist, qui a bien sûr induit la réactivation de tous les plugins nécessaires et uniquement ceux-ci ;
- vidage du cache (images comprises) et recalcul des CSS depuis la page publique.

Et là ça a marché. La cause ? Pour moi c’est parce que LESS CSS n’était plus activé, car c’est sans doute lui qui interférait et provoquait le problème. Mais comme cette fois je l’avais désactivé en même temps que les autres plugins, et pas tout seul, la transition s’était faite en douceur.

Moralité ? Il ne suffit pas de mettre à jour les plugins avant une mise à jour de SPIP, il vaut mieux les désactiver pour ne restituer que ceux qui sont nécessaires (et compatibles).