2011-01-23 2 views
0

J'ai des problèmes avec une liste de liens que je génère en utilisant Wordpress, qui affiche un lien de page spécifique ainsi que tous les liens de ses pages enfants. J'essaie de mettre en surbrillance les liens lorsque vous les survolez, puis lorsque vous cliquez dessus et naviguez vers la page, le lien de cette page reste en surbrillance. J'ai trouvé un moyen d'y parvenir en utilisant principalement:Comment mettre en évidence un élément de la liste parent sans mettre en surbrillance les éléments de la liste des enfants?

#sidebar a:hover{ 
    padding: 7px; 
    background-color: #f7f9fe; 
    color: #728186; 
} 
#sidebar ul > li .current_page_item{ 
    padding: 7px; 
    background-color: #f7f9fe; 
    color: #728186; 
} 

mais cela ne me permet pas de mettre en surbrillance la page parent/li. Si j'utilise:

#sidebar li.current_page_item 

l'enfant reste en surbrillance sur sa page, mais sur la page parent, il met également en évidence l'élément enfant, non seulement lui-même.

voici mon php analysable:

<ul id="sidebar" class="sidelist"> 
    <li class="pagenav"><h5>WHAT WE DO</h5> 
     <ul> 
      <li class="page_item page-item-39 current_page_item"><a href="http://www.autismrecoveryfoundation.org/meet-the-board" title="Meet the Board">Meet the Board</a> 
      <ul class='children'> 
       <li class="page_item page-item-84"><a href="http://www.autismrecoveryfoundation.org/meet-the-board/being-a-board-member-101" title="Being A Board Member 101">Being A Board Member 101</a></li> 
      </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

Voici l'étiquette de modèle que je utilise de la page Wordpress sur les pages de la liste wp (http://codex.wordpress.org/Function_Reference/wp_list_pages):

<?php 
      // use wp_list_pages to display parent and all child pages all generations (a tree with parent) 
      $parent = 39; 
      $args=array(
      'title_li' => '', 
      'child_of' => $parent 
      ); 
      $pages = get_pages($args); 
      if ($pages) { 
       $pageids = array(); 
       foreach ($pages as $page) { 
       $pageids[]= $page->ID; 
       } 

       $args=array(
       'title_li' => '<h5>WHAT WE DO</h5>', 
       'include' => $parent . ',' . implode(",", $pageids) 
      ); 
       wp_list_pages($args); 
      } 
     ?> 

Répondre

1

Mise à jour

Pour afficher votre liste de pages dans une liste plate, depth à -1 mis:

$args=array(
    'depth' => -1, 
    'title_li' => '<h5>WHAT WE DO</h5>', 
    'include' => $parent . ',' . implode(",", $pageids) 
); 

De cette façon, vous ne serez pas de bricoler avec des sélecteurs enfants et vos sous-pages ne sont pas contenus dans la page principale de li plus.


Vieille réponse

Le problème réside dans ce sélecteur:

#sidebar ul > li .current_page_item 

La partie #sidebar ul recherche ul qui descend de #sidebar, mais dans votre code ulest la #sidebar. En outre, li .current_page_item trouverait tout.current_page_item à l'intérieur du li qui contient votre en-tête.

Changer votre sélection à ceci:

#sidebar > li > ul > .current_page_item 

Vous pouvez également utiliser ce, depuis vos pages widget a sa propre classe de toute façon:

.pagenav > ul > .current_page_item 
+0

merci pour aider! J'ai donc essayé vos deux suggestions, ainsi que les 2 d'avant que vous ayez édité le post, et aucun d'eux ne le fait. J'ai essayé d'utiliser #sidebar> li> ul> .current_page_item, et quand sur la page parent garde le parent et l'enfant en surbrillance, puis quand sur la page enfant, aucun n'est mis en surbrillance. Pourriez-vous regarder la page? http://www.autismrecoveryfoundation.org/meet-the-board – Amanda

+0

@Amanda: Pouvez-vous me montrer votre balise template WordPress pour cette liste de navigation? Ou est-ce dans un widget? – BoltClock

+0

@BoltClock: J'ai modifié la publication pour afficher la balise de modèle.J'aurais aimé savoir comment faire de la liste un seul niveau, car cela résoudrait le problème, donc il n'y avait pas de listes imbriquées à traiter. – Amanda

Questions connexes