Modifier le thème d’un site WordPress avec DreamWeaver Utiliser WordPress comme un CMS (2)

Utiliser WordPress comme un CMS (1)

18 juin 2006

J’ai décidé de noter ici quelques trucs utiles pour développer un site Wordpress comme un site classique. Je n’ai pas l’intention de mettre ici un tutorial pour créer un site de A à Z avec WordPress, sutout que chacun a un peu son idée sur ce qu’est un site classique.

Je compte avant tout utiliser ces notes techniques comme un aide-mémoire pour moi-même et ne pas avoir à recommencer les mêmes recherches lorsque je développe un nouveau site.

Une des premières choses que l’on est amené à modifier quand on veut développer un site "classique", c’est la page d’accueil. Par exemple, on peut décider de n’afficher que les posts d’une certaine catégorie.

Pour cela, il suffit d’ajouter une commande dans le fichier index.php (pour plus d’informations sur la fonction query_posts(), voir le codex) :

<?php  if (is_home()) { 
query_posts(’cat=1′);
} ?>

Puis, on continue avec la Loop, comme dans un blog classique.

Jusque là, pas de problème.

Ensuite, on a aussi souvent besoin de modifier la colonne sur le côté, sidebar.php, pour qu’elle ait un contenu spécifique dans la page d’accueil.

Pour cela, on utilise généralement le tag conditionnel : is_home()

Or, c’est là qu’une petite difficulté survient. Il se trouve que, comme on a modifié la requête dans index.php, quand WordPress arrive au niveau de sidebar.php, il semble qu’il ne reconnaisse plus qu’il soit sur la page d’accueil.

En l’occurence, il pense qu’il est dans une archive de catégorie, puisque l’on affiche uniquement les posts de la catégorie 1.

N.B. : je considère ici que le thème est fondé sur la structure de base de index.php, c’est-à-dire que les appels des différents fichiers se fait dans l’ordre suivant :

  1. appel de header.php
  2. contenu de index.php
  3. appel de sidebar.php
  4. appel de footer.php

Pour contourner ce problème, voici la solution que j’ai trouvée. La première idée que j’ai eue, c’est de ne plus utiliser le tag conditionnel is_home() dans la sidebar puisqu’il ne semble pas opérationnel dans ces conditions.

Donc, à la place, je définis dans index.php une variable $is_home et je lui donne la valeur 1. Ce qui donne :

<?php  if (is_home()) {
$is_home = ‘1′;
query_posts(’cat=1′);
} ?>

Et ensuite, dans sidebar.php, je fais une boucle conditionnelle sur la variable $is_home :

<?php
// variable $is_home is set in index.php
if ($is_home == ‘1′) {
afficher un contenu spécifique pour la page d’accueil;
} ?>

Or, c’est là que ça se complique : ça ne marche toujours pas !

C’est là qu’il faut absolument que je me rappelle LE truc qui bloque : c’est la fonction get_sidebar()

Elle fonctionne comme la fonction php include(), mais, ce n’est pas la fonction include(), et elle ne permet pas de passer la variable $is_home. Là, je n’ai pas vraiment compris pourquoi, mais le fait est que si on utilise la fonction include() à la place, tout va mieux.

C’est-à-dire qu’au lieu d’écrire

<?php get_sidebar(); ?>

il faut écrire :

<?php include (TEMPLATEPATH . '/sidebar.php'); ?>

Et voila, le tour est joué.

technorati tags : ,

Article dans : WordPress

5 Commentaires Ajouter le vôtre

  • 1. rusty  |  16 novembre 2006 à 18:48

    Bonjour, je n’arrive pas à exploiter cette solution qui m’interesse pourtant beaucoup pour mon site.
    A chaque fois j’ai ceci qui s’affiche :

    Parse error: syntax error, unexpected ‘;’ in /home/www/rusty/www/wp-content/themes/gray-gets-green-10/index.php on line 6

    J’utilise le template grey gets green.

    J’ai pourtant bien fait à priori ce que vous avez indiqué ?

    Y aurait-il une autre solution dans mon cas ?

    ++

  • 2. rusty  |  16 novembre 2006 à 19:25

    J’ai trouvé autre chose dans le codex merci quand même ; )

  • 3. Cecile  |  21 novembre 2006 à 7:35

    Bonjour,

    Je pense, vu le message d’erreur, que c’etait certainement du a une erreur de syntaxe quelque part. Visiblement un ; mal place.

    Mais, bon, si vous avez trouve une solution qui marche, tant mieux.

    Sinon, moi aussi, je pense implementer une nouvelle solution dans mes prochains sites. J’ai effectivement decouvert la fonction rewind_posts()

    Je pense qu’elle doit permettre d’aboutir a une solution beaucoup plus simple.

    A tester.

  • 4. Patrice A.  |  27 octobre 2007 à 15:16

    Bonjour,

    je tiens à te remercier pour ton article, j’étais en train de m’arracher les cheveux depuis un bon moment sur cette fonction is_home() complètement inutilisable dans ma sidebar.

    Ca marche maintenant !

    Cordialement
    P.

  • 5. Maximus  |  20 décembre 2007 à 17:38

    I would like to see a continuation of the topic

Laisser un Commentaire

Obligatoire

Obligatoire, ne sera pas affiché

Tags HTML autorisés :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Trackback de cet article  |  S'abonner au flux RSS des commentaires