Feuille de style dynamique - des boucles et des balises dans le CSS

Pour paramétrer une feuille de style dans l’espace privé de SPIP sans passer par du code css, on peut utiliser un formulaire CFG qui permettra de saisir les valeurs des attributs que l’on souhaite pouvoir modifier. En paramétrant les autorisations du formulaire, on peut y laisser accéder les administrateurs, les rédacteurs, ou au contraire seulement les webmestres.

CFG doit donc être installé avant tout.

Lien
-  CFG:Références sur Spip-Contrib

Dans le dossier fonds que l’on aura au besoin créé dans le dossier du squelette ou dans le dossier du plugin CFG, on crée un formulaire avec autant de champs que l’on veut de paramètres.

Chaque champ pourra être appelé dans les squelettes avec une balise #CONFIG{nom_du_formulaire/nom_du_champ}.

Pour utiliser ces balises dans une feuille de style, celle-ci doit être interprétée par SPIP avant d’être envoyée au navigateur :

  • la feuille de style doit être renommée avec une extension html
styles.css devient styles.html (ou styles.css.html pour bien montrer qu’il s’agit d’une feuille de style squelettifiée).
  • les valeurs des attributs doivent être remplacées sur la feuille de style par les balises #CONFIG correspondant aux saisies du formulaire.
  • l’appel de la feuille de style doit être modifié pour appeler un fichier du squelette.
<link rel="stylesheet" href="[(#CHEMIN{styles.css}|direction_css)]" type="text/css" media="screen, projection" />

devient

<link rel="stylesheet" href="/spip.php?page=styles" type="text/css" media="screen, projection" />

  • des headers css doivent être ajoutés au début du nouveau squelette, ainsi que la valeur du cache le cas échéant
#CACHE{3600*24*30}
#HTTP_HEADER{Content-Type: text/css;}

A ce stade ça marche impeccable, les attributs saisis sur le formulaire CFG sont récupérés au moment du calcul de la feuille de style.

Un problème se pose si on veut modifier la feuille de style avec l’extension web developer : ça n’est bien sûr plus possible. On peut tant qu’on veut bricoler le css à la volée et avoir un rendu immédiat, mais plus question d’enregistrer directement le fichier css modifié sous le nom du squelette html : les valeurs récupérées viendraient écraser les balises, et on perdrait les headers. Il faut donc reporter les modifs sur le squelette si elles ne concernent pas les attributs paramétrables, sur le formulaire sinon.

Discussion

Une discussion

  • On peut aussi utiliser la balise #URL_PAGE :

    [<link rel="stylesheet" href="(#URL_PAGE{styles})" type="text/css" media="screen, projection" />]

    et indiquer des variables d’environnement, utilisables ensuite dans le squelette de feuille de style, exemple :

    [<link rel="stylesheet" href="(#URL_PAGE{styles,id_rubrique=#ID_RUBRIQUE})" type="text/css" media="screen, projection" />]

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 13 octobre 2009