...appliqué au squelette Sarka v1.1.1 (deux captures d’écrans ci-dessous).
Avant-propos
En essayant un certain nombre de squelettes, je me suis dit qu’il serait utile d’avoir la possibilité de les paramétrer.
Il ne s’agit évidemment pas de réécrire du code mais par exemple de :
- choisir des couleurs
- choisir d’afficher la liste des rubriques en haut, en bas, ... ou pas du tout
- choisir le nombre d’articles récents à afficher
- ...
C’est bien décrit dans l’introduction de cet article :
Le principe est simple, pour pouvoir distribuer des squelettes, il faut pouvoir configurer certaines petites choses : le numéro de la rubrique qui sert aux galeries, le nom du mot clef qui cache les articles, la couleur de fond du CSS, etc...
L’idéal pour cela serait de fournir à l’administrateur une page de configuration dans l’espace privée dans laquelle il puisse faire tous ces choix. Au lieu de l’obliger à aller modifier la structure de son site ou les fichiers du squelette.
Principe général
Chaque concepteur de squelette peut prévoir une page de configuration. Cette page permet de :
- modifier des variables globales utilisées dans le squelette (rubrique particulière, mot-clé ou groupe de mots-clés, nombre d’articles récents à afficher, ...) ;
- modifier les styles du squelette (couleurs, épaisseurs, tailles, espacements, "paddings", ...) ;
- sauvegarder les paramètres ainsi définis.
Les variables globales du squelette sont rangées dans un fichier dans le répertoire du squelette [1]. Ce fichier porte toujours le même nom afin de permettre son chargement dans la partie Spip hors du squelette.
Si c’est un paramètre de style, on peut imaginer de régénérer la feuille de style à la volée mais une fois pour toute dans l’arborescence du squelette.
Du côté de Spip, on a :
- un onglet de plus qui apparaît dans la configuration lorsque le fichier de configuration du squelette existe ;
- un canevas identique pour toutes les configurations de squelette afin :
- d’assurer une présentation commune ;
- de charger toutes fonctions utiles ;
- de simplifier le fichier de configuration du squelette ;
- de charger une page dans le répertoire “ecrire” (je n’ai pas réussi à faire marcher la page de configuration dans le répertoire du squelette).
Description
Concernant le squelette
Usage de la configuration
“(dossier_squelettes)/variables_globales_squelette.php” est le fichier qui définit les paramètres du squelette. Si il existe, il est chargé par “ecrire/mes_options.php”.
Exemple de contenu de “ecrire/mes_options.php” :
<?php
$GLOBALS['dossier_squelettes'] = "squelette-sarka-spip";
if ($f = find_in_path("variables_globales_squelette.php"))
include_local ($f);
?>
Ces paramètres sont de ce fait disponibles partout, notamment dans le squelette. On y accède, soit, en PHP par $GLOBALS['sarka']['nombre_articles_recents']
, soit, par une nouvelle balise #{}SKELVAR [2] à ajouter dans “(dossier_squelettes)/mes_fonctions.php” [3] :
function balise_SKELVAR($p) {
if ($a = $p->param) {
$sinon = array_shift($a);
if (!array_shift($sinon)) {
$p->fonctions = $a;
array_shift( $p->param );
$nom = array_shift($sinon);
$nom = ($nom[0]->type=='texte') ? $nom[0]->texte : "";
}
}
if (!$nom) {
// cas de #ENV sans argument : on retourne le serialize() du tableau
// une belle fonction [(#ENV|affiche_env)] serait pratique
$p->code = 'serialize(\$GLOBALS[\'sarka\'])';
$p->statut = 'html';
} else {
// admet deux arguments : nom de variable, valeur par defaut si vide
$p->code = "\$GLOBALS['sarka'][$nom]";
if ($sinon)
$p->code = 'sinon('.
$p->code .
compose_filtres_args($p, $sinon, ',') .
')';
$p->statut = 'php';
}
return $p;
}
Je ne comprends pas tout des balises mais il faut remarquer le terme ’sarka’ qui apparaît deux fois et permet d’aller chercher la bonne table.
Modification de la configuration
“(dossier_squelettes)/subconfig-squelette.php” permet à un administrateur du site de modifier interactivement la configuration du squelette.
“(dossier_squelettes)/appliquer_modifs_config-squelette.php” assure la modification des fichiers nécessaires à la prise en compte des changements de paramètres :
- “(dossier_squelettes)/variables_globales_squelette.php”
- “(dossier_squelettes)/(les styles).css”
- ...
Concernant Spip
On modifie “ecrire/inc_presentation.php” pour insérer un nouvel onglet dans la page de configuration. Cet insertion se fait à la condition qu’il existe un fichier “(dossier_squelettes)/subconfig-squelette.php” (deux nouvelles lignes après l’“onglet_interactivite”) :
[...]
if ($rubrique == "configuration"){
onglet(_T('onglet_contenu_site'), "configuration.php", "contenu", $onglet, "racine-site-24.gif");
onglet(_T('onglet_interactivite'), "config-contenu.php", "interactivite", $onglet, "forum-interne-24.gif");
if ($f = find_in_path("subconfig-squelette.php"))
onglet(_T('onglet_squelette'), "config-squelette.php", "squelette", $onglet);
onglet(_T('onglet_fonctions_avances'), "config-fonctions.php", "fonctions", $onglet, "image-24.gif");
}
[...]
C’est la seule modification au code de SPIP existant.
L’onglet ajouté ci-dessus appelle une page canevas, “ecrire/config-squelette.php”, qui elle-même insérera la page de configuration du squelette “(dossier_squelettes)/subconfig-squelette.php”. Ce canevas est du même type que ceux des autres pages de configuration [4].
En cas de modification des variables, ce canevas appelle “(dossier_squelettes)/appliquer_modifs_config-squelette.php” si il existe.
Installation
Attention : j’utilise les versions avec les suffixes “.php” ci-après.
Spip 1.8.2-e php | Sarka 1.1.1 php |
tar bz (1.6M) | tar bz (21k) |
tar gz (2.1M) | tar gz (23k) |
zip (2.4M) | zip (49k) |
- Installer Spip 1.8.2 e php
- unzip -aX SPIP-v1-8-2-e-php.zip (<— les commandes que j’ai faites sous Linux)
- mv -i SPIP-v1-8-2-e spip-test
- (finir l’installation de Spip : machine, user, pass, base, ...)
- cd spip-test
- Installer le squelette Sarka v1.1.1 php
- unzip -aX squelette_sarka-spip-1.1.1-php.zip
- mv -i squelette_sarka-spip-1.1.1/* .
- rmdir squelette_sarka-spip-1.1.1
- Installer mon patch
- tar xpvzf SPIP182e-patch-config-squelette.tar.gz
C’est tout... et ça marche !
Il ne reste plus qu’à (Yaqua :-)) étendre le module pour le squelette Sarka ou à l’écrire pour votre squelette.
Reste à faire
- Séparer complètement ce qui est la modification de Spip et celle du squelette Sarka
- Déplacer le fichier “ecrire/lang/subconfskel_fr.php” dans le répertoire du squelette
idée : avoir un fichier “ecrire/lang/subconfskel_fr.php” chargeant “(dossier_squelettes)/lang/subconfskel_fr.php” si il existe.
Patch non testé ... |
... de Spip 1.8.2 e (répertoire “ecrire”) |
... du squelette Sarka v1.1.1 (répertoire “squelette-sarka-spip”) |
Ci-joint les fichiers suivants :
- “ecrire/config-squelette.php”
canevas général de la page de configuration du squelette - “ecrire/inc_presentation.php”
ajout de l’onglet de configuration du squelette - “ecrire/lang/confskel_fr.php”
les messages utilisés dans “ecrire/config-squelette.php” - “ecrire/lang/subconfskel_fr.php”
les messages utilisés dans “squelette-sarka-spip/subconfig-squelette.php” - “ecrire/mes_options.php”
définition du répertoire du squelette utilisé et chargement ses variables globales - “squelette-sarka-spip/appliquer_modifs_config-squelette.php”
comme son nom l’indique (première version fonctionnelle, non complète bien sûr) - “squelette-sarka-spip/styles/impression.css”
un style pour l’impression d’article [5]. - “squelette-sarka-spip/article.html”
la page qui l’utilise - “squelette-sarka-spip/mes_fonctions.php”
le fichier qui définit la nouvelle balise - “squelette-sarka-spip/subconfig-squelette.php”
le paramétrage du squelette Sarka (très rudimentaire : deux variables pour l’instant) - “squelette-sarka-spip/variables_globales_squelette.php”
paramètre(s) Sarka (que j’ai ajouté) - “squelette-sarka-spip/sommaire.html”
la page qui utilise ces nouveaux paramètres.
Discussions par date d’activité
2 discussions
Je pense que ce que tu cherches, c’est le plugin Config (CFG).
oui, probablement un peu de CFG à la place de modifications dans SPIP. De façon à ce que lors du prochain changement de version de Spip, je ne soit pas bloqué.
Répondre à ce message
Bonjour
Voici donc un début de réponse à une attente de ma part.
Je souhaite configurer le nombre d’articles de brèves ou de sites référencés, à afficher en fonction de l’actualité de mon site.
Par défaut j’y procede en modifiant manuellement le « Sommaire » du squelette EVA-WEB-2 c’est pas cool.
Je vais essayer de mettre en application cette proposition, mais je ne suis pas doué pour la programmation.
Si un jour cette excellente idée était transformée en Plugin . . .
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |