- Statut : non résolu
- Ce sujet contient 10 réponses, 3 participants et a été mis à jour pour la dernière fois par
dean, le il y a 16 années et 11 mois.
-
AuteurMessages
-
19 octobre 2006 à 7 h 13 min #448971
Bonjour,
je souhaiterais utiliser différentes sidebar, en fonction des pages affichées (post static), en effectuant une condition à partir du titre de la page (the_title) -le thème utilisé est: Cordobo Green Park 0.9.2 BETA 2 –
je suis donc allé dans l’éditeur de thème et j’ai édité le modèle de page (pahe.php) et j’ai utilisé la fonction switch:
$title=’‘;
switch($title)
{
case ‘Forum’:
include (TEMPLATEPATH . ‘/sidebarf.php’);
break;case ‘A propos’:
include (TEMPLATEPATH . ‘/sidebar.php’);
break;default:
include (TEMPLATEPATH . ‘/sidebar.php’);
break;
}
; ?>Le problème c’est que quelque soit le titre de la page, seule la sidebar par défaut s’affiche, je suppose que j’ai un problème de variable mais je ne vois pas où
Merci d’avance de votre aide.
19 octobre 2006 à 11 h 11 min #582179[c][/c] risque de changer à chaque boucle : où as-tu inséré ton hack, à l’intérieur de la boucle ou pas ?
Si tu l’as inséré à l’intérieur de la boucle, tu risques d’avoir des problèmes de positionnement… le template du sidebar étant inclue dans celui du post
Essaye avec les tags condionnels : is_category ou is_author, par exemple…19 octobre 2006 à 15 h 24 min #582180Merci de ta réponse.
En fait j’ai inséré ce script juste en dessous de
dans page.php
je viens aussi d’essayer avec is_author et j’ai le même problème.
Comment faire pour faire corresponde la valeur the_title avec le titre de la page/post ?
19 octobre 2006 à 17 h 07 min #582181il faudrait qu’il y ait un seul post par page
have_posts()) : $top_query->the_post(); $first_post = $post->ID; ?>remplace le début de la boucle avec ça.
19 octobre 2006 à 19 h 03 min #582182ce petit bout de code devrait pouvoir te guider 😉 ça marche chez moi pour adapter le footer en fonction du titre
if (get_the_title()==’Forum'{
include (TEMPLATEPATH . ‘/sidebarf.php’);
}
else{
include (TEMPLATEPATH . ‘/sidebar.php’);
}19 octobre 2006 à 19 h 06 min #582183il faut qu’il soit intégré dans un code comme celui là:
if (have_posts()) :
while (have_posts()) : the_post(); ;
endwhile;sinon fais moi un copier coller de ton page.php du thème, je te montrerais dessus
19 octobre 2006 à 19 h 07 min #582184zut j’avais pas lu les autres réponses, désolé….
20 octobre 2006 à 5 h 54 min #582185Bonjour à tous,
merci pour vos propositions que j’ai toutes essayées (dans tous les sens!) mais ça ne marche toujours pas, ou j’ai je suis passé à côté de quelque chose.
Je vous donne la page.php en entier, il y a peut-être une erreur qui bloque ailleur ?
<?php
switch($the_title)
{
case ‘Forum’:
include (TEMPLATEPATH . ‘/sidebarf.php’);
break;case ‘A propos’:
include (TEMPLATEPATH . ‘/sidebarap.php’);
break;default:
include (TEMPLATEPATH . ‘/sidebar.php’);
break;
}
;?>20 octobre 2006 à 7 h 20 min #582186[c]$title= »;[/c] a disparu ?
Il reste toujours à l’extérieur de la boucle…
A mon avis ce système peut pas fonctionner.
Montre-nous comment tu as copié la soluce de Dean, stp.20 octobre 2006 à 15 h 34 min #582187Nickel !!!!
en fait j’avais fait un simple copier/coller trop rapide de la solution de Dean et il me manquait une paranthèse et un endif; en fin de fonction while. Autre problème, la fonction if semble me poser des problème, j’ai donc opeté pour un switch (plus approprié dans on cas d’ailleurs. je vous joins le code:
<div id="content2" class="narrowcolumn">
<br />
</div>
</div>Merci à tous!!!
20 octobre 2006 à 16 h 22 min #582188c’est cool, j’aime bien quand ça marche 😉
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.