Testez plusieurs squelettes avec « var_skel »

5 mars 2010,
par Romy Têtue


Tester un nouveau jeu de squelettes directement sur un site existant, de façon transparente pour les internautes, ça vous tente ?

Essayer var_skel, c’est l’adopter !

Il est rare qu’un site soit refondu plus d’une fois par an. J’ai donc choisi les années pour nommer les répertoires squelettes. Par exemple : je crée la prochaine version d’un site dans le répertoire 2012, pendant qu’il continue de tourner avec les squelettes 2008 et que les précédents sont conservés dans les répertoires 2006 et 2003 [1] [2].

Ceci est possible grâce à un bout de code de Fil, chopé au vol je ne sais plus où, mais il y a déjà longtemps (en mai 2006), ensuite amélioré avec la complicité de Cédric avant d’être ajouté à ma trousse :

# choix du squelette tetue.net/?var_skel=toto
# tetue.net/?var_skel= pour revenir au normal
$liste_skels = array(
'2001',
'2002',
'2003',
'2004',
'2005',
'2006',
'2007',
'2008',
'2009',
'2010',
'2011',
'2012',
'2013',
'2014',
'2015',
'2016',
'test'
);
if (isset($_GET['var_skel'])) {
        if (in_array($_GET['var_skel'],$liste_skels))
                setcookie('skel', $_COOKIE['skel'] = $_GET['var_skel'], NULL, '/');
        else
                setcookie('skel', $_COOKIE['skel'] = '', time()-3600*24, '/');
}
if (isset($_COOKIE['skel']) AND in_array($_COOKIE['skel'],$liste_skels) AND is_dir(_DIR_RACINE.$_COOKIE['skel']))
        $dossier_squelettes = $_COOKIE['skel'];

Remarquez qu’il est très simple d’y ajouter autant de répertoires squelettes annuels que nécessaire.

- Mise en service

  1. Nommez vos répertoires squelettes par année, par exemple : « 2008 » et « 2012 »
  2. Désignez le jeu de squelettes à utiliser par défaut, par exemple : $GLOBALS['dossier_squelettes'] = '2008'; dans votre fichier /config/mes_options.php (s’il n’existe pas, créez-le)
  3. Copiez à la suite le code ci-dessus (ou installez ma trousse à têtue)
  4. Videz le cache de votre site SPIP
  5. Passez la variable ?var_skel=2012 dans l’URL du site public pour le prévisualiser avec les squelettes 2012. Épatant, n’est-ce pas ?
  6. Passez la variable ?var_skel= pour revenir à la vue normale

Qui voit quoi ?

  • Les internautes continuent de voir le site avec les squelettes déclarés, de façon totalement transparente — soit, dans notre exemple, avec les squelettes « 2008 ».
  • Seule la personne qui a saisit l’URL modifiée avec un var_skel voit le site différemment — soit, dans notre exemple, avec les squelettes « 2012 » —, sans incidence aucune pour les autres.

En tant que webmestre, il m’est très utile de pouvoir essayer de nouveaux squelettes directement sur un site en fonctionnement. Cela permet, autre avantage appréciable, d’y travailler à plusieurs en même temps :

  • les rédacteurs et administrateurs continuent de produire et gérer les contenus dans leur environnement habituel,
  • pendant que je programme et teste les améliorations à venir en situation réelle, qu’il s’agisse de menues évolutions ou d’une refonte générale.

C’est vraiment chouette !

Un squelette SPIP n’est pas un thème graphique !

Et le switcher ? me demande-t-on alors... Le switcher de squelettes est un plugin SPIP qui affiche la liste des squelettes disponibles, sur le site public, sous la forme d’un menu select qui permet de basculer instantanément le site d’un jeu de squelettes à un autre.
Je n’ai pas besoin d’un tel menu pour choisir le squelette à tester et je ne comprends pas quel peut être l’intérêt pour l’internaute de tester différents squelettes.

Car, attention, un squelette SPIP n’est pas un thème graphique : il détermine avant tout le fonctionnement d’un site, pas seulement son apparence ! Essayer un autre squelette, soit un autre fonctionnement, sur la même base de données, ça revient parfois à changer complètement de site : pourquoi déstabiliser l’internaute avec ça ? Changer ainsi de squelette intéresse le webmestre, éventuellement les administrateurs du site, mais certainement pas les internautes, auxquels on proposera plutôt un switcher de thèmes graphiques. Encore que... quel intérêt pour l’internaute ??

{#TITRE,#URL_ARTICLE,#INTRODUCTION}

Vos commentaires

  • Le 5 mars 2010 à 11:59, par Maïeul En réponse à : Testez plusieurs squelettes avec « var_skel »


    auxquels on proposera plutôt un switcher de thèmes graphiques. Encore que... quel intérêt pour l’internaute ??

    A titre personnel, j’ai activé le switcher de thème (via les modif de cerdic sur zen garden) sur mon site de schtroumpfs. L’interêt n’est pas tellement pour l’internaute mais pour la personne qui veut tester collezion avec différent thème.

  • Le 5 mars 2010 à 12:01, par Romy Têtue En réponse à : Testez plusieurs squelettes avec « var_skel »

    Oui, c’est bien ce que je dis : pourquoi donc embêter les internautes avec ça ???

  • Le 5 mars 2010 à 15:15, par Soon7 En réponse à : Testez plusieurs squelettes avec « var_skel »

    Hello,

    Cette astuce est très intéressante. Fonctionne t elle toujours en Spip 2.0 ?

  • Le 5 mars 2010 à 15:28, par Romy Têtue En réponse à : Testez plusieurs squelettes avec « var_skel »

    Soon7 : oui évidemment ! Et même que c’est diffusé prêt à l’emploi dans ma trousse à têtue pour SPIP 2.0 et supérieures :-)

  • Le 7 mars 2010 à 16:55, par baroug En réponse à : Testez plusieurs squelettes avec « var_skel »

    L’intérêt, ça n’est pas, si on aime pas le thème actif, d’en choisir un autre qu’on préférerait ?

  • Le 8 mars 2010 à 10:46, par Dom En réponse à : Testez plusieurs squelettes avec « var_skel »

    L’intérêt du style-switcher me semble être de proposer différentes versions en fonction du public. Je l’utilise avec deux versions : normal et mal-voyant, charte à grosses polices et forts contrastes.

  • Le 8 mars 2010 à 11:39, par Maïeul En réponse à : Testez plusieurs squelettes avec « var_skel »


    pourquoi donc embêter les internautes avec ça ???

    Je ne vois pas en quoi cela « embête » l’internaute. Il est libre de l’utiliser ou non ...

  • Le 8 mars 2010 à 12:39, par Romy Têtue En réponse à : Testez plusieurs squelettes avec « var_skel »

    @Dom : ah, voilà une utilisation bien intéressante ! et tu parles bien d’un switcher de styles ;-)

    @Maïeul : tomber sur des erreurs 404, comme j’ai pu l’expérimenter en switchant de squelettes sur d’autres sites, parce que telle page existe dans tel squelette mais pas dans tel autre — et c’est bien normal, puisque c’est à ça que servent les squelettes —, je trouve pour le moins embêtant, vi.

  • Le 8 mars 2010 à 16:45, par Maïeul En réponse à : Testez plusieurs squelettes avec « var_skel »

    A h mais je parlais de switcher les thèmes, pas les squelettes ;)

  • Le 10 mars 2010 à 14:14, par Stéphane Deschamps En réponse à : Testez plusieurs squelettes avec « var_skel »

    En fait moi j’utilise le switcher parce que c’est moins laborieux que de bricoler l’URL. Je l’ai réglé de sorte que seuls les admins le voient.

  • Le 8 juin 2010 à 11:32, par Marc VALLETEAU de MOULLIAC En réponse à : Testez plusieurs squelettes avec « var_skel »

    Très très bon « plugin » que cette panoplie d’outils performants, merci Romy ... avec un petit bémol (peut-être dû à une méconnaissance, de ma part, d’un mécanisme compliqué) : l’utilisation de var_skel (idée géniale !!) n’est pas possible, semble-t-il, sur un site mutualisé (en spip 2.0.10) ...

    Par contre, totalement opérationnel sur un site « normal » ... Encore merci.

  • Le 6 octobre 2010 à 15:23, par Firouz En réponse à : Testez plusieurs squelettes avec « var_skel »

    Bonjour,
    Est ce que ce système marche avec des « plugins » de squelettes
    Ex 01 : plugin - squelettes ’sarkaspip’ (diverses versions par exemple 1.2, 1.3 etc)
    Ex 02 ; plugin - squelette EVA
    etc.
    Et dans le cas positif comment on fait avec le fichier option.php
    Je n’ai plus le temps ou on me laisse pas le temps, de faire les squelettes « brut de brut » ce qui est assez long, je travaille directement sur les plugins ?

  • Le 29 octobre 2010 à 13:05, par Blog informatique En réponse à : Testez plusieurs squelettes avec « var_skel »

    Bonjour,

    Merci pour toutes ces informations.
    Laiza

  • Le 3 janvier 2011 à 09:26, par boutique gay En réponse à : Testez plusieurs squelettes avec « var_skel »

    Je me demandais si, comme pour d autres cms, on pouvait faire de spip une boutique en ligne.

  • Le 7 février 2011 à 14:09, par JLuc En réponse à : Testez plusieurs squelettes avec « var_skel »

    Cette astuce est super, mais elle ne marche plus lorsque le couteau_kiss est installé, car celui ci force la valeur de $dossier_squelette, mais si la saisie n’est pas renseignée...

  • Le 4 avril 2011 à 03:52, par Med En réponse à : Testez plusieurs squelettes avec « var_skel »

    En effet, si c’était compatible avec le plugin couteau-KISS, ça serait parfait :)

  • Le 13 mai 2011 à 14:27, par Filnug En réponse à : Testez plusieurs squelettes avec « var_skel »

    @Med
    effectivement, le couteau kiss pose problème. Même désinstallé via « step », le script dans mes_options.php ne fonctionne pas !!!

  • Le 23 août 2011 à 17:56, par cmd-R En réponse à : Testez plusieurs squelettes avec « var_skel »

    Merci à ce post et aux commentaires qui m’ont permis de découvrir que le plugin Couteau KISS empêche toute utilisation de ce genre de code dans mes_option.php :

    if ($_SERVER['HTTP_HOST'] == 'mobile.domaine.com'){
       $GLOBALS['dossier_squelettes'] = 'mobile';
    }

    La seule solution est de désactiver le plugin dans la gestion des plugins. Dommage…

  • Le 22 décembre 2011 à 17:40, par Suske En réponse à : Testez plusieurs squelettes avec « var_skel »

    L’interface du « Couteau Kiss » est très explicite :

    Si vous forcez certains réglages dans votre fichier config/mes_options.php, ce formulaire sera sans effet sur ceux-ci.

    Quand vous aurez terminé la configuration de votre site, vous pourrez, si vous le souhaitez, copier-coller le contenu du fichier tmp/ck_options dans config/mes_options.php avant de désinstaller ce plugin qui ne sera plus utile.

    Quand les réglages sont satisfaisants, il suffit donc de procéder à cette copie avant de désactiver le Couteau Kiss...

  • Le 22 décembre 2011 à 18:19, par Suske En réponse à : Testez plusieurs squelettes avec « var_skel »

    Après quelques recherches au sujet de la mutualisation, je découvre que mutualisation/mutualiser.php propose une constante

            // definir une constante qui contient l'adresse du repertoire du site mutualise
            // peut servir dans les fichiers mes_options des sites inclus
            // par exemple avec  $GLOBALS['dossier_squelettes'] = _DIR_SITE . 'squelettes:' . _DIR_SITE . 'cheznous:dist';

    En répercutant cette info dans le code proposé par Tetue, ça donne :

    if (isset($_COOKIE['skel']) AND in_array($_COOKIE['skel'],$liste_skels) AND is_dir(_DIR_SITE.'/'.$_COOKIE['skel']))
    $GLOBALS['dossier_squelettes'] = _DIR_SITE . $_COOKIE['skel'];

    Et c’est parti :-)

  • Le 16 février 2012 à 21:37, par Suske En réponse à : Testez plusieurs squelettes avec « var_skel »

    On m’interroge sur la mise en oeuvre...
    Donc :

    • le plugin « mutualisation » fournit une constante calculée pour chaque site de la mutualisation SPIP et qui contient le nom du répertoire de chaque site mutualisé : _DIR_SITE
    • il suffit donc d’ajouter cette constante dans le calcul du « path » des dossiers squelettes disponibles. Le code à mettre dans le « mes_options.php » du site mutualisé concerné sera donc du type
      # choix du squelette tetue.net/?var_skel=toto
      
      # tetue.net/?var_skel= pour revenir au normal
      
      $liste_skels = array(
      
      'squelette2010',
      
      'squelette2012'
      
      );
      
      if (isset($_GET['var_skel'])) {
      
              if (in_array($_GET['var_skel'],$liste_skels))
      
                      setcookie('skel', $_COOKIE['skel'] = $_GET['var_skel'], NULL, '/');
      
              else
      
                      setcookie('skel', $_COOKIE['skel'] = '', time()-3600*24, '/');
      
      }
      
      if (isset($_COOKIE['skel']) AND in_array($_COOKIE['skel'],$liste_skels) AND is_dir(_DIR_SITE.'/'.$_COOKIE['skel']))
      
      $GLOBALS['dossier_squelettes'] = _DIR_SITE . $_COOKIE['skel'];

    La seule différence par rapport au code proposé par tetue : « _DIR_SITE . » permet d’ajouter la partie du path qui détermine l’endroit où se trouvent les fichiers de votre site mutualisé...

  • Le 19 février 2012 à 11:55, par Manu En réponse à : Testez plusieurs squelettes avec « var_skel »

    Bonjour,
    Dans le cadre d’une ferme à SPIP, j’applique la méthode décrite ici et complétée par Suske pour tester plusieurs squelettes. Ça fonctionne au poil. Enfin, presque !
    Il y a en effet un problème résiduel dans la mesure où les fichiers de langues personnalisés, par ex :
    sites/monsite_mutualise/mondossier_squelettes/lang/local_fr.php
    ne sont pas pris en compte...
    Une idée du pourquoi ?

    PS : je précise que si je sors du contexte de var_skel, c’est-à-dire, si je courcicuite le fichiers mes_options.php et que je renomme mon dossier de test en « squelettes », le fichier de langue est bien pris en compte

  • Le 29 février 2012 à 16:24, par Stéphane Deschamps En réponse à : Testez plusieurs squelettes avec « var_skel »

    Romy,

    J’ai décidé il y a un moment de me passer du switcher pour appliquer ta méthode, et il y a juste un truc qui m’embêtait, c’est que quand tu attaques une URL en ?var_skel=machin il faut rafraîchir la page :

    1. premier chargement : on fixe un cookie
    2. rafraîchissement : l’affichage prend en compte le dossier de skel machin.

    J’ai donc rajouté une petite modification dans le code que j’utilise en local pour avoir l’affichage immédiat :

            if (
                    ( isset($_COOKIE['skel']) AND in_array($_COOKIE['skel'],$liste_skels) AND is_dir(_DIR_RACINE.$_COOKIE['skel']) )
                    ||
                    ( isset($_GET['var_skel']) AND in_array($_GET['var_skel'],$liste_skels) AND is_dir(_DIR_RACINE.$_GET['var_skel']) )
                    ) {
                    $GLOBALS['dossier_squelettes'] = _DIR_RACINE . $_COOKIE['skel'];
                    }

    ... en espérant que ça n’introduise pas de trou de sécu.

  • Le 19 octobre 2012 à 18:00, par Fil En réponse à : Testez plusieurs squelettes avec « var_skel »

    à propos de var_skel on peut aussi l’utiliser pour modifier la base de données utilisée ; il faut pour cela aller bidouiller config/connect.php de la manière suivante :

    if ($_COOKIE['skel'] == '2013')      
    spip_connect_db('localhost','','user','pass', 'base2013', 'mysql', 'spip','');
    else
    spip_connect_db('localhost','','user','pass', 'base_normale', 'mysql', 'spip','');

Répondre à cet article

forum message

Raccourcis : {{gras}} {italique} -liste [bla->url] <q> <quote> <code>.

Qui êtes-vous ? (optionnel)

Suivre les commentaires : RSS 2.0 | Atom