Accueil du site > Ateliers > Bricolage > Installer le Switcher de squelettes
Squelettes alternatifs pour Spip 1.9
Installer le Switcher de squelettes
On en rêvait... Le voilà enfin !
vendredi 9 juin 2006, par ,
Plus besoin de contributions compliquées via des mots clés, ou de bidouilles complexes et variées pour mettre en place sur son site plusieurs jeux de squelettes. Un seul site avec autant de squelettes alternatifs que l’on désire qui changent sur un clic, c’est désormais possible.
Ah oui, mais comment ? J’espère que je vous ai mis l’eau à la bouche, et donné l’envie de passer sur la 1.9 pour tester tout de suite cette formidable possibilité.
IMPORTANT : Pour SPIP 1.9, le plugin Switcher de squelettes permet de changer de squelette en un clin d’œil. Nous laissons le reste de l’article, devenu obsolete, à titre purement informatif.
Le Plugin Switcher
Télécharger le plugin Switcher pour SPIP 1.9
Installer le dossier switcher dans le répertoire plugins à la racine du site.
Allez dans http://domaine.net/ecrire/?exec=admin_plugin
Activer le Switcher en le cochant.
Ce plugin ajoute un formulaire à liste déroulante en javascript sur tous les squelettes de la partie publique du site, permettant de basculer entre les squelettes dist, ceux d’un dossier squelettes, et… et l’ensemble des squelettes contenus dans le répertoire nommé squelettes-test où chaque jeu de squelettes doit être dans un sous-répertoire.
Pour personnaliser le style par défaut du formulaire, allez dans le fichier switcher_fonctions.php.
Pour personnaliser le nom du repertoire de squelettes alternatif,
allez dans inc/switcher_config.php et indiquez le nom du répertoire dans :
$repertoire_squelettes_alternatifs ='ce_que_vous_voulez';
De même, on peut spécifier que seuls les administrateurs du site auront accès au basculement de squelette en mettant à true la variable suivante, toujours dans inc/switcher_config.php :
$afficherSeulementPourLesAdmins=TRUE;Une démo est disponible ici :
http://spiptest.africa-web.org/
Archives
Parce qu’un exemple est toujours plus parlant qu’un long discours, je vous renvoie tout de suite vers des exemples concrets sur spip.net où sont utilisées la fraichdist (la nouvelle dist), hbones un squelette générique basé sur les microformats, et le squelette traditionnel de la doc tel que vous le connaissez :
http://www.spip.net/?var_skel=fraich
http://www.spip.net/?var_skel=hBones
http://www.spip.net/?var_skel=comme...
Vous pouvez donc constater que tout passe par ce paramètre de ?var_skel= passé dans l’url. Le secret de ce petit miracle est un simple fichier switcher.php et une ligne de code à ajouter dans mes_options.php. [1].
Le code de cette petite merveille est consultable sur la zone :
http://trac.rezo.net/trac/spip-zone...
Mais il n’est pas inconcevable de penser qu’il puisse un jour être intégré à SPIP sous forme de plugin.
Voici un pas à pas de ce qu’il faut faire pour aboutir au même résultat sur votre site, et pouvoir tester autant de jeux de squelettes que vous souhaiterez sans avoir à définir à chaque fois le $dossier_squelettes de ecrire/mes_options.php comme l’on faisait précédemment.
1ère étape :
Rendez-vous sur la page http://zone.spip.org/trac/spip-zone... et enregistrez sous le titre switcher.php.
Placez ce fichier dans le répertoire /ecrire.
2ème étape :
Éditez le fichier mes_options.php (également dans le répertoire /ecrire) ou créez-le s’il n’existe pas, et ajoutez-y le code suivant [2] :
<?php
include _DIR_RESTREINT.'switcher.php';
?>
3ème étape : Il s’agit à présent de personnaliser le nom du cookie de votre squelette et les noms et chemin des dossiers squelette alternatifs dans le fichier switcher.php. Pour cela, vous aurez à les insérer entre les parenthèses de la ligne $squelettes_alternatifs = array(); sous la forme suivante : 'nom du cookie' => 'chemin du squelette'
Par exemple :
$squelettes_alternatifs = array(
'fraich' => 'fraichdist'
'test1' => 'squeletest/squeletest1'
'test2' => 'squeletest/squeletest2'
'testmix' => 'fraichdist:squeletest1'
);Dans les deuxième et troisième lignes, on appelle deux répertoires squelettes squeletest1 et squeletest2 rangés dans un répertoire de test général placé à la racine : /squeletest. Dans la dernière ligne, le cookie testmix appellera squeletest1 si fraichdist n’est pas trouvé. Notez en ce cas la séparation :.
4ème étape : Vider votre cache, et ensuite tapez l’url de votre site suivie de l’appel ?var_skel= complété par le nom du cookie en paramètre :
Pour revenir au squelette par défaut, il suffit de laisser le paramètre vide :
Attention : le nom du cookie qui appelle le squelette peut être different du nom du répertoire de votre squelette, mais c’est bien lui qui doit être passé en paramètre. Dans le code proposé ci-dessus dans le switcher, le squelette appelé par le cookie ’fraich’ est dans un répertoire qui s’appelle /fraichdist et qui se trouve à la racine du site.
Par ailleurs, les chemins des squelettes devront être indiqués en partant de la racine (dossier spip).
Grâce au cookie, l’effet est persistant : une fois qu’un squelette spécifique a été appelé, c’est lui qui s’affiche, jusqu’à ce que vous en sélectionniez un nouveau.
Comme le paramètre est passé dans l’url, vous pouvez facilement permettre à vos utilisateurs de switcher par le biais de liens, ou encore d’un menu déroulant…
Les lignes suivantes créent un telle liste permettant de switcher en restant sur la même page :
<ul>
<li><a href="[(#SELF|parametre_url{var_skel,fraich})]">fraich</a></li>
<li><a href="[(#SELF|parametre_url{var_skel,test1})]">test1</a></li>
<li><a href="[(#SELF|parametre_url{var_skel,test2})]">test2</a></li>
<li><a href="[(#SELF|parametre_url{var_skel,testmix})]">testmix</a></li>
</ul>Igor a mis en place dans son coin web un formulaire de sélection de squelettes avec select que l’on peut voir sur sa page d’accueil :
Voici le code qu’il propose avec un léger Javascript.
Javascript (à insérer dans le Head de la page) :
<script type="text/javascript">
//<![CDATA[
function gotof(url) {
window.location=url;
}//]]>
</script>
Le code du formulaire :
<div>
<form action="" method="post">
<select name="sommaire" id="sommaire" onchange="gotof(this.options[this.selectedIndex].value)">
<option selected="selected" value="">Choisir</option>
<option value="[(#SELF|parametre_url{var_skel,fraich})]">Squelette Fraichdist</option>
<option value="[(#SELF|parametre_url{var_skel,test1})]">Squelette Test 1</option>
<option value="[(#SELF|parametre_url{var_skel,=})]">
Retour au squelette par defaut
</option>
</select>
</form>
</div>Et voilà le résultat (inactif car les squelettes alternatifs cités ne sont pas installés) :
Merci à Igor pour cette intéressante contribution.
Conclusion :
Un grand merci à ceux qui ont permis cela.
Notes
[1] Si le fichier mes_options.php n’existe pas, il faudra le créer à cette occasion.
[2] Si le fichier existe déjà, omettre les déclarations php
<?php} et {?>
qui y figurent déjà.
