Carnet Wiki

Plugin Switcher (suite)

Le plugin “Switcher” de squelettes permet de paramétrer et choisir des dossiers alternatifs de squelettes ; cela apporte une solution simple pour laisser l’utilisateur libre de changer entre plusieurs thèmes, ou encore offrir au webmestre et à ses utilisateurs de comparer plusieurs jeux de squelettes sur un site.

Reprise et complements de la documentation originelle : Le Switcher de squelettes.

Auteurs

Philippe Drouot, adaptation en plugin de la contrib «switcher» de Fil, distribué sous licence GNU/GPL
Le plugin a été repris par la suite par divers contributeurs qui le maintienne avec amour pour lui apporter des nouvelles fonctionnalités et de rester au goût du jour.

Téléchargement et Installation

-  Télécharger le plugin Switcher sur la Zone [1]
-  Installation : Comme tous les autres plugins, cf. http://www.spip.net/fr_article3396.html

Fonctionnement

Ce plugin ajoute un petit formulaire à liste déroulante (en javascript ) en haut des pages publiques du site [2] , permettant de modifier les chemins de recherche de vos squelettes en-ligne, si autorisé par le webmestre : cela permet dans l’interface publique de choisir le dossier premier et l’ordre [3] entre :
-  les squelettes de votre dossier «squelettes» (voire vos dossiers squelettes),
-  ceux de «squelettes-dist» (ceux de la distribution standard placés dans le répertoire du même nom),
-  et/ou des dossiers alternatifs spécifiés,
-  en fin, optionnellement, l’ensemble des squelettes organisés en sous-répertoires d’un autre dossier répertoire (nommé «squelettes-test» par défaut), à l’intérieur duquel chaque jeu de squelettes doit être dans un sous-répertoire spécifique : ce dernier mode de fonctionnement est particulièrement adapté à la proposition de thèmes alternatifs sur un site [4].

Remarques :
-  le délimiteur originel etait/est encore le ’ , ’,
alors que la Macro documentée utilise déjà le ’ : ’ !
-  il n’y a pas de fonction d’autorisation explicite
-  l’utilisation de la &var_skel= est à expliciter
-  vérifier le fonctionnement pour indication de plusieurs dossiers (avec Z ?)
-  ajouter une visualisation ’lisible’ de _chemin() ou chemin.txt :
par var_dump(unserialize(spip_file_get_contents('chemin.txt')));
-  l’exploration du source montre bien d’autres options, non explicitées dans la documentation (parfois évoquées dans des commentaires?) :

  • SWITCHER_REPERTOIRE_SQUELETTES_ALTERNATIFS
  • SWITCHER_DOSSIERS_SQUELETTES
  • SWITCHER_SQUELETTES (indiqué à déclarer optionnellement dans mes_options.php /? plutot dans mes_fonctions.php ??/ erreur d’écriture pour le précédent)

Voir pour mémoire la définition du Dossier des Squelettes dans la personnalisation de SPIP.

Personnalisation

Le plugin propose une page complète de configuration en ligne :

  • sous CFG en SPIP2 ecrire/?exec=cfg&cfg=switcher,
  • sous Config / Plugins en SPIP3 /?exec=configurer_switcher

Le paramétrage autorisé au webmestre (dans Gestion des Plugins) peut alors :

  • indiquer les répertoires alternatifs,
  • les comptes autorisés à voir le sélecteur actif (non disponible sur la version en-ligne v.0.2.5),
  • rendre public le sélecteur pour tout le monde (visiteur anonyme compris).
    -  Pour personnaliser le style par défaut du formulaire, allez dans le fichier «switcher_fonctions.php»

Quelques rappels SPIP :
-  la notion de #CHEMIN
-  les constantes de personnalisations

Utilisation courante

Une première utilisation bien documentée était(est) visible sur la page http://zpip.spip.org/->http://zpip.spip.org/] démontrant les divers thèmes disponibles pour Zpip :
tous les thèmes (squelettes, limités à des fichiers de CSS) sont organisés dans des sous-repertoires d’une même dossier principal.
L’autre utilisation courante, est de faciliter les tests de validations entre deux jeux de squelettes (lors d’une migration d’apparence du site).

Plus précisément

Euh... c’est pas fini, encore moins vérifié.... à suivre plus tard !
La liste des dossiers proposés est constituée de :
-  SWITCHER_SQUELETTES si fixé dans mes_options
-  sinon SWITCHER_DOSSIERS_SQUELETTES
-  sinon défini


-  https://contrib.spip.net/Dossiers-d-un-plugin-trunk-branches-tags
-  https://www.weblog.eliaz.fr/article113.html
-  https://contrib.spip.net/Commandes-svn-de-base-pour-la-zone

1. uniformiser le séparateur ( systématiquement convertir à :, avec warning
2. pouvoir afficher au survol le PATH_SPIP courant (hormis les plugins)
3. accepter un début de masque de sous-répertoire (pour pouvoir utiliser /squel* et donc etre compatible avec les installations courantes)
4. afficher les valorisations prédéfinies par defined( dans la config..
5. pouvoir logguer toutes les inclures sur uen page (dans un fichier .log spécial)
6. basculer vers une vraie fonction autoriser :
- autoriser_voir_switcher - autoriser_changer_switcher
- autoriser_configurer_switcher
7. transcrire le remplacement de $GLOBALS[’auteur_session’] (déprécié) en $GLOBALS[’visiteur_session’] (et protéger en cas de non-definition)
8. voir l’implantation d’un groupes d’auteurs autorisés (par reprise d’une zone d’accès restreint ? AR version 3.15.17 en SPIP 3 / 3.3.7 en SPIP 2 / la v4 ? )
9. faut-il travailler en préemptif ou en reset (en conservant ou non l’appel aux ./squelettes, ./squelettes-dist ./ ) et l’expliciter ! le paramétrer ?
10. faut-il reconvertir à l’usage impératif avec la syntaxe $GLOBALS[’xxx’] pour chacune des variables ?

Certaines remarques font état d’un risque d’insécurité sur ce plugin : référence demandée !!
Enfin un utilisateur demandait la création d’une balise #SWITCHER.... ou #MENUS_SWITCHER
Ce qui amènerait aussi à rendre inter-paramétrable le style (et le DIV d’insertion ?)

[1Téléchargement du Plugin, liens complémentaires : Récupérer le zip sur l’espace de téléchargement, ou le(s) miroir(s), de spip-zone, cf. rubrique Produits finis

[2Le code généré est injecté par le pipeline affichage_final ; la fonction switcher_affichage_final() positionne un <div id="plugin_switcher" style="top: 0;left: 20px; position: absolute;"...  ..</div> à la fin de page, juste avant la balise finale </body>.

[3Rappelons que SPIP va chercher ses fichiers squelettes ou noisettes, en parcourant dans un ordre précis une suite de chemins, par défaut : votre dossier «squelettes», les sous-dossiers des plugins actifs, pour finir par le dossier «squelettes-dist» et enfin la racine du site : voir https://programmer.spip.net/La-noti....

[4En lien avec l’insertion de la noisette optionnelle inc-theme.html dans les squelettes de la «dist» !

YannX - Mise à jour :26 January 2020 at 15:32