Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
13 juin 2010 7 13 /06 /juin /2010 00:00

Une idée venue du forum OB, merci Miawka pour ta patience pendant les essais…


Idée simple : donner un style particulier aux pages du blog qui parlent de cuisine, un autre à celles qui parlent de mécanique auto, etc. . Idée simple en apparence mais qui demande de l'attention : il s'agit des pages plutôt que des articles.

Pour styler les articles selon leur catégorie, j'ai déjà fabriqué quelque chose. Dans ce cas le fond de page (pour prendre cet exemple) n'a rien de spécial. En contrepartie, si plusieurs articles de catégories différentes figurent sur une même page, chacun sera stylé différemment.

Pour styler les pages selon leur  nature  (en fait, leur URL) j'ai aussi fabriqué autre chose. Dans ce cas on peut, par exemple, styler les pages de catégorie selon leur catégorie : non seulement leurs articles (qui sont tous de la même catégorie, évidemment !) mais aussi le fond de page, les modules… tout.

Il reste un cas tordu mais pas si rare : si le blog est configuré en un article par page, chaque page index-nn.html (celles qui suivent la page d'accueil) contiendra des articles d'une même catégorie (puisqu'il n'y a qu'un seul article) mais il sera impossible de lui donner un design particulier. Même remarque pour la page de l'article lui-même (avec ou sans ses commentaires). Vous voyez le hic ?

Conclusion : je n'avais pas pensé à tout ! Voilà pourquoi j'ai fabriqué un troisième programme pour répondre à ce besoin précis.

Il donne à la page une classe correspondant à la catégorie de l'article. Dans le cas où vous affichez plusieurs articles par page, cela marche aussi si tous les articles sont de la même catégorie (ou absence de catégorie).

L'installation et l'emploi de ce programme ne sont pas plus compliqués que ceux des deux autres programmes. Prenez seulement le temps de réfléchir à ce dont vous avez exactement besoin pour choisir le programme qui vous convient le mieux. Si vous avez une demande encore plus tordue faites-moi donc signe : ça finira peut-être par un quatrième programme !


Installation

Vérifiez d'abord que, dans la config du blog, vous affichez bien la catégorie de l'article (le petit bout  publié dans ). C'est bête je sais, mais…

Si vous n'avez jamais installé de JavaScript chez vous rendez-vous ici pour les détails.

  1. Cliquez sur le bouton et sauvegardez le fichier sur votre ordinateur.
  2. Ensuite stockez ce programme, sans rien y changer, dans l'espace  Mes Documents/Autres fichiers  de votre admin de blog.
  3. Enfin, ajoutez une ligne au pied de page du blog :
     <script type="text/javascript" src="URL_du_programme"></script> 

Remplacez bien sûr URL_du_programme par l'url effective du fichier. Et c'est fini.

Mise en œuvre

Dès lors, le body des pages  mono-catégorie  sera doté d'une classe categorie-nnnnn, où 'nnnnn' est le numéro de catégorie du ou des articles figurant sur la page. Pour connaître les numéros de vos catégories, vous pouvez par exemple regarder les URL du module "Catégories". Les articles non classés sont considérés comme de catégorie categorie-aucune.

Et puis ?

Et puis le reste se joue dans le CSS. Admettons que la catégorie  cuisine  porte le numéro 123456 et que vous vouliez lui donner une image de fond particulière. Le blog a sans doute déjà une image de fond :

 body { background-image:url(fond_general.jpg) } 

Pour définir l'image nouvelle il suffit de compléter le CSS comme suit :

 body { background-image:url(fond_general.jpg) } .categorie-123456 { background-image:url(fond_cuisine.jpg) } 

Autre exemple : on veut donner une image de fond particulière aux modules. Quelque part dans le(s) fichier(s) CSS on trouve :

 .box { background-image:url(module_general.jpg) } 

Donner une image particulière aux modules des pages  cuisine  s'obtient ainsi :

 .box { background-image:url(module_general.jpg) } .categorie-123456 .box { background-image:url(fond_cuisine.jpg) } 

Le principe est donc simple : on reprend ou crée une règle  normale  et

  • si elle porte sur body on remplace le sélecteur body par .categorie-xyz,
  • si elle porte sur autre chose on préfixe le sélecteur avec .categorie-xyz.

Le CSS c'est bien.

Ne pas oublier

Deux points à garder en mémoire :

  1. l'attribution de la nouvelle classe n'a lieu qu'en fin de chargement. La page aura d'abord son aspect normal, ensuite seulement apparaîtront les changements. Si vos pages demandent dix minutes pour se charger complètement, voilà peut-être une bonne raison de chercher à les alléger…
  2. certains de vos lecteurs naviguent sans JavaScript, par choix ou par obligation. Ceux-là verront la présentation standard.

Démontage

Le présent article vous fournit le programme et son mode d'emploi. Son article jumeau démonte entièrement le programme si vous voulez comprendre comment il marche (lecture totalement facultative mais espérée intéressante !).

Mises à jour

  • Octobre 2008 : 1ère publication
  • Mai 2012 : amélioration et simplification du programme, mise à disposition du programme sous forme téléchargeable, report de la  dissection  du programme dans un article séparé.

commentaires

B
<br /> désolé je voulais poster sur ton article sur IE6..arf..il est temps que j'aille me coucher aussi... :oops:<br /> <br /> <br />
Répondre
W
<br /> <br /> Sourire... bonne nuit, le matou !<br /> <br /> <br /> <br />
B
<br /> a combatre sans douleur, on triomphe sans gloire..(ou un truc du genre)..<br /> <br /> tu peux dormir sur tes deux oreilles cher sorcier, j'ai fait un survol rapide avec mon emulateur (qui vaut ce qu'il vaut), y a pas tant de bobos que ça ;)<br /> <br /> <br />
Répondre
D
<br /> Merci beaucoup pour toutes vos aides e vous en suis très reconnaissant.<br /> <br /> Bonne fin de soirée<br /> Dollard21<br /> <br /> <br />
Répondre
A
<br /> <br /> De rien, pouvu que ça serve à quelque chose :-)<br /> <br /> <br /> <br />
D
<br /> Je vous remercie beaucoup pour cette aide. Vous m'avez vraiment aidé.<br /> <br /> Juste je vous embete encore un peu et vou m'en excuse mais je voudrais savoir comment faire comme vous ne pas faire bouger l'image du fond car sur mon fond ça fait plein de même image mais j'en<br /> voudrais qu'une<br /> <br /> <br /> Et une dernière chose si on peut faire une image de présentation par catégorie. Moi la j'ai le golden gate et je voudrais changer pour chaque catégorie.<br /> <br /> <br />
Répondre
A
<br /> <br /> background-atttachment:fixed - l'image est immobile<br /> <br /> <br /> background-repeat : no-repeat - un seul exemplaire.<br /> <br /> <br /> Mais je ne voudrais pas refaire ici le site du Zéro ou la spécif CSS, voir les liens dans 'blogologie'.<br /> <br /> <br /> Pour la photo du golden gate : actuellement c'est une image , pas une image de fond.<br /> <br /> <br /> Il faut commencer par en faire l'image de fond de quelque chose pour, ensuite, pouvoir la choisir dans le css. Par exemple :<br /> <br /> <br /> #top {width:750px; height:320px;background:url(goldengatebrige.jpg)}<br /> <br /> <br /> Pour une catégorie particulière (voir aussi l'article) :<br /> <br /> <br /> .categorie-9876543 #top {background:url(autrechose.jpg)}<br /> <br /> <br /> <br />
D
<br /> je l'ai mis où été catégorie warhammer mais pour celle Jeux vidéo ça ne marche pas.<br /> <br /> Le .categorie-1234 c'est a peu près la seule chose que je métrise :-)<br /> <br /> <br />
Répondre
A
<br /> <br /> Si une manip marche et pas l'autre, c'est qu'il y a une différence entre les deux.<br /> <br /> <br /> Je parierais que l'url de l'image n'est pas bonne.<br /> <br /> <br /> Je n'aime pas les jeux de hasard :-)<br /> <br /> <br /> <br />
D
<br /> Il me manque juste quelques chose c'est ou mettre le<br /> .catégorie<br /> <br /> <br />
Répondre
A
<br /> <br /> Là où il était déjà (dans le CSS article), ça allait très bien.<br /> <br /> <br /> Attention :<br /> <br /> <br /> 1 - pas d'accent sur .categorie<br /> <br /> <br /> 2 - et de toute manière c'est .categorie-123456 (=le numéro d'une catégorie précise), pas .categorie sans autre précision...<br /> <br /> <br /> <br />
D
<br /> Merci beaucoup<br /> je vais essayer et je vous redit.<br /> Vous êtes vraiment super merci beaucoup.<br /> <br /> <br />
Répondre
A
<br /> <br /> Huhu...<br /> <br /> <br /> *baisse modestement les yeux*<br /> <br /> <br /> *en attendant les résultats*<br /> <br /> <br /> *parce qu'on n'est jamais assez prudent...*<br /> <br /> <br /> <br />
D
<br /> Bonjour<br /> cette article m'interesse mais je n'y arrive pas<br /> j'ai mis la phrase avec l'url du ducument en pied de page artcile et ensuite je sais pas il n'y a pas de .catégorie<br /> <br /> merci d'avance<br /> <br /> <br />
Répondre
A
<br /> <br /> Bonjour.<br /> <br /> <br /> L'extension .txt pour le fichier javascript est inhabituelle mais ce n'est pas elle qui bloque. La raison est plus simple : plus loin dans le CSS il y a une section 'personnalisation'. Dans cette<br /> section il y a une règle<br /> <br /> <br /> body {background-color:#qqchose ! important; background-image:none ! important}<br /> <br /> <br /> A cause du  !important c'est mort. Il suffit de le supprimer - j'ai fait l'essai à la Webdev sur une page warhammer, le paysage bucolique (!) apparaît aussitôt :-)<br /> <br /> <br /> <br />

Archives