Annonce

Faites la différence entre le service WordPress.com et l'application libre WordPress.

Mettez-vous à jour ! WordPress 3.3.2 est disponible en français.

Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
Annonce 4 : Rejoignez-nous sur Facebook, Google + et sur Twitter

#1 27-01-2012 19:39:07

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Ma technique est elle améliorable ?

Bonjour,

Dans le but de personnaliser mon blog wordpress, je travaille avec une boucle personnalisée, dans la sidebar.

je prépare une requête du type 
$lesPages = new WP_Query('post_type=page&orderby=menu_order&nopaging=1&order=ASC');
while ($lesPages->have_posts()) : $lesPages->the_post();

pour extraire les pages, et ces pages sont classées avec des numéros d'ordre bien précis.
Ainsi je peux les séparer dans la sidebar avec des instructions du type:
if ($post->menu_order < 100)
et
elseif ($post->menu_order >= 100 && $post->menu_order < 1000)   etc

Ça fonctionne, je peux avoir des menus bien séparés, des lignes
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
sont créées, qui pontent vers "page.php"

donc c'est du classique, et ça fonctionne..

Maintenant je voudrais avoir, dans page.php, des ID différents en fonction du menu utilisé.
La seule chose que j'ai trouvée est de transformer le lien comme ça  par exemple
<li><a href="<?php the_permalink() ?>/?flag=dico" rel="bookmark"><?php the_title(); ?></a></li>
en ajoutant une variable d'url spécifique (flag) et je teste cette variable après avec un bloc du style (dans loop-page.php)

Code: html

		<?php  // ****************************************************
		  //  teste le flag pour differencier dictionnaire et racines
		if (isset($_GET['flag'])) {
			  if ($_GET['flag'] == "racine") {  ?>
			  <div id="lg-racine-entry" <?php post_class(); ?>> 
			  <?php   }  elseif ($_GET['flag'] == "dico")  {  ?>     
			  <div id="lg-dico-entry" <?php post_class(); ?>> 
			  <?php   }
		}  else  {  // repli si flag non défini  ?> 
			  <div id="lg-default-entry" <?php post_class(); ?>> 
        <?php }  // *******fin du isset ******************************   ?>

ça marche mais n'existe il pas un moyen plus simple de faire cela??

Hors ligne

 

#2 27-01-2012 19:44:13

tabris
Bavard WP
Date d'inscription: 05-02-2011
Messages: 192
Site web

Re: Ma technique est elle améliorable ?

Est-ce que tu pourrais nous donner l'idée générale des fonctionnalités derrière ce code ? Je pense que ça pourrait nous aider à te proposer une solution

Hors ligne

 

#3 27-01-2012 20:09:14

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

le but, c'est qu'au lieu d'avoir, dans la sidebar, tous les liens des pages ensemble, je les veux séparés, par groupes logiques.

Par exemple, sur ce site La gargouille, les trois pavés de menu   (les spectacles, La compagnie, Media) sont des pages et ils sont séparés.

Maintenant je voudrais (enfin j'arrive à le faire) personnaliser le contenu des pages en fonction du sous-menu appelé

Hors ligne

 

#4 27-01-2012 20:15:31

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Ma technique est elle améliorable ?

Si la finalité est de transporter un identificateur en fonction du menu cliqué, pourquoi pas.

Je condenserai un peu l’écriture des if ... else avec un truc de ce genre, mais cela ne change rien à l'algorithme.

Code: html

<div id="lg-<?php echo (isset($_GET['flag'])) ? $_GET['flag'] : 'default'?>-entry" <?php post_class(); ?>>

Hors ligne

 

#5 27-01-2012 20:23:15

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

ah oui, c'est vrai que c'est plus compact comme ça...

donc mon idée n'était pas trop stupide?
j'avais peur qu'il existe une fonctionnalité toute prête dans Wordpress.

merci à toi

Hors ligne

 

#6 27-01-2012 21:09:02

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Ma technique est elle améliorable ?

il y a des tonnes de moyens pour faire cela, ne serait ce que de faire des templates différents selon les pages. A ce moment là l'affichage n'est plus déterminé par l'appel du menu mais est directement lié à la page, il n'y a plus d'infos passées avec l'url.

Je n'ai pas vraiment compris la logique de ce que tu veux faire, c'est pour cela que je ne vais pas la remettre en cause smile

Hors ligne

 

#7 28-01-2012 02:56:33

Lumière de Lune
Admin nomade
Lieu: Maroc / France
Date d'inscription: 15-08-2007
Messages: 11993
Site web

Re: Ma technique est elle améliorable ?

Lionelwp a écrit:

Maintenant je voudrais (enfin j'arrive à le faire) personnaliser le contenu des pages en fonction du sous-menu appelé

"appeler" un sous menu, en allant sur une page non ?
Si je comprends bien tu es sur une page "A", avec un menu, tu cliques sur un élément de ce menu, et tu vas sur une page B, et là tu veux un "sous menu" différent de A ?

Premièrement, au lieu de coder un wp_query dans la sidebar j'utilisarais wp_list_pages, http://codex.wordpress.org/Function_Ref … list_pages

Pour les sous menus "contextuels", on va dire, l'option child_of est parfaite.

La logique voudrait que ces menus contextuels soient rattachés à la même hiérarchie que la page dans laquelle on se trouve.
get_post_ancestors http://codex.wordpress.org/Function_Ref … _ancestors permet de déterminer la page parente ou la page ancêtre

Si la logique est plus tordue que cela, un champs personnalisé dans la page mentionnant l'id de la page / des pages qui doivent servir de parents à wp_list_pages est la solution la plus flexible

Je ne recommande pas de passer des paramètres de cette façon là dans l'url. ça donne une notion des paramètres du blog, ça crée du duplicate content

Hors ligne

 

#8 28-01-2012 08:01:19

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Ma technique est elle améliorable ?

lol, la question est donc mal posée.
J'avais compris qu'il y avait création de menu dans la sidebar. Que chaque "sous menu" défini par son menu_order s'affichait dans un div spécifique, et que l'appartenance à un sous menu déterminerait l'apparence de la page appelée.
Mais pas du tout que les menus devaient changer selon la navigation, pour moi ils étaient toujours identiques.

Hors ligne

 

#9 28-01-2012 22:03:56

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

Guy, tu  as bien compris...... !!

les menus de la sidebar ne bougent jamais, j'ai juste voulu scinder ce menu en plusieurs menus indépendants en me servant du menu_order des pages, car les pages n'ont pas toutes le même type de contenu et je trouve que c'est plus clair de les séparer, plutôt que d'avoir un long menu de pages toutes mélangées.

par exemple, dans le site que je suis en train de faire, un dictionnaire, il y a des pages qui contiennent des mots avec leurs définitions (comme les pages d'un dictionnaire classique)  et des pages qui contiennent des racines de noms avec la correspondance des noms.
Je voulais pouvoir affecter des IDs différents aux Div pour pouvoir styler différemment selon le type de la page, ça fonctionne parfaitement, je voulais juste savoir si il y avait une meilleur solution que la mienne.

Lumière de Lune, j'ai pas compris l'histoire de duplicate content dans ce cas...
je ne connais pas la fonction wp_list_pages, le lien que tu donnes est vide.

Hors ligne

 

#10 29-01-2012 16:53:41

Lumière de Lune
Admin nomade
Lieu: Maroc / France
Date d'inscription: 15-08-2007
Messages: 11993
Site web

Re: Ma technique est elle améliorable ?

Il suffisait d'enlever la virgule malencontreuse pour que le lien fonctionne
http://codex.wordpress.org/Function_Ref … list_pages

Hors ligne

 

#11 30-01-2012 08:29:57

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

Lumière de Lune a écrit:

Il suffisait d'enlever la virgule malencontreuse pour que le lien fonctionne
http://codex.wordpress.org/Function_Ref … list_pages

ah oui, c'est vrai c'est mieux comme ça..

mais cette fonction concerne la liste des liens dans la sidebar, moi ce que je voulais c'est personnaliser les pages qui sont affichées après que l'on a cliqué sur ces liens.

Hors ligne

 

#12 30-01-2012 09:55:00

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Ma technique est elle améliorable ?

ta technique est une option, elle a le désavantage de devoir passer des infos dans l'url mais évite de devoir retester le menu_order et donc qu'il y ait des risques de désynchronisation des tests entre le menu et les pages (à moins de faire une fonction qui sera appelée dans les deux cas).

Étant donné que tu te bases sur le menu_order, il était tout aussi simple de le tester directement dans la page.

Quelque chose du style:

Code: html

global $post;
$flag = "default";
if ($post->post_type == "page")
{
     if ( $post->menu_order >= 100 && $post->menu_order < 200)
          $flag = "dico";
     else if (.....

}

C'est le principe évidement, pour éviter toute erreur, teste si $post existe, etc...

Hors ligne

 

#13 30-01-2012 11:21:23

Lumière de Lune
Admin nomade
Lieu: Maroc / France
Date d'inscription: 15-08-2007
Messages: 11993
Site web

Re: Ma technique est elle améliorable ?

Cette technique permet de faire des listes de liens n'importe où.
"A près qu'on a cliqué sur ces liens", cela veut dire quoi ? Sur une nouvelle page ? Dans un accordéon ?

Par ailleurs, le "flag" serait avatageusement remplacé par un champs personnalisé pour chaque page, non ?

Hors ligne

 

#14 30-01-2012 11:31:24

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

Lumière de Lune a écrit:

"A près qu'on a cliqué sur ces liens", cela veut dire quoi ? Sur une nouvelle page ? Dans un accordéon ?

quand je clique sur un lien de page dans la sidebar, ça ouvre page.php et suivant le lien cliqué (détecté par menu_order) je veux pouvoir agir sur les éléments de page.php (en fait c'est juste le fond du h2 titre de la page qui change) sans passer par des templates.



Lumière de Lune a écrit:

Par ailleurs, le "flag" serait avantageusement remplacé par un champs personnalisé pour chaque page, non ?

je connais pas encore assez bien le comportement des champs personnalisés mais je vais creuser ça.

Je ne suis pas un expert de Wordpress alors il y a peut être des solutions que je ne connais pas.

Hors ligne

 

#15 07-02-2012 08:29:04

Lionelwp
Bavard WP
Date d'inscription: 08-10-2009
Messages: 142

Re: Ma technique est elle améliorable ?

J'ai modifié ma technique......

je ne passe plus de variables dans l'url et je teste le menu_order directement dans loop-page.php, comme ceci:

Code: html

<?php
	if ( $post->menu_order > 100 && $post->menu_order < 1000) 
	{   ?>
	<div id="lg-dico-entry">
<?php
	}  else if ( $post->menu_order > 1000) {
?>
	<div id="lg-racine-entry">
<?php  
	}  else  {  ?>
	<div id="lg-entry">
<?php }  ?>

et effectivement c'est plus propre au niveau des URLs

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.23
© Copyright 2005-2006 WordPress France

[ Generated in 0.047 seconds, 22 queries executed ]