[Résolu] Solution simple pour filtrer une page par terme de taxonomie

Catégories:

Bonjour,

Je cherche à faire une page affichant des noeuds, jusque là, rien de très sorcier. J’aimerais ensuite les filtrer par terme de taxonomie, ce que je réalise avec Views. Enfin j’aimerais afficher sur ma page deux listes déroulantes contenant les termes des deux vocabulaires utilisés par mes noeuds (un peu à la manière des filtres sur la page de contenu).

Est ce réalisable simplement à l’aide d’un module, ou bien dois-je programmer celà ?

Merci d’avance de vos réponses.

#

Au final je suis parti sur un développement qui ne me plait pas vraiment mais voilà.
Je récupère tout d’abord mes différents vocabulaires et termes en fonction d’un argument passé dans mon url :

<?php
 
echo t('Filtrer par ');
 
$index = 1;
  foreach (
taxonomy_get_vocabularies(arg(1)) as $id => $infos):
        echo
$infos->name.': ';
      
$index++;
     
$arSelect = array(get_url($index, 'all') => 'Tous/toutes');
     foreach (
taxonomy_get_tree ($id) as $tid => $t_infos) {
         if (
taxonomy_term_count_nodes ($t_infos->tid) != 0){
               
$arSelect[get_url($index, $t_infos->name)] = $t_infos->name;
         }
      }
      echo
display_select ($index, $arSelect, arg($index));
      echo
" ";
  endforeach;

?>

Après mes librairies sont les suivantes :

<?php
function get_url($id, $term){
  
$ar_info = arg();
 
$ar_info[$id] = $term;
return
drupal_get_path().implode ('/', $ar_info);
}

function display_select ($index, $arSelect, $default){
 
$output = '<select name="my-select-'.$id.' onChange="$(location).attr(\'href\',this.value)">';
  foreach (
$arSelect as $url => $info) {
      if (
strtolower($info) == strtolower($default)) {
          
$output .= '<option value="'.$url.'" selected>'.$info.'</option>';
     } else {
          
$output .= '<option value="'.$url.'">'.$info.'</option>';
      }
  }
 
$output .= '</select>';
    return
$output;
}
?>

Problème ça fait pas mal d’appels à la base (mais je suis pas sur qu’on puisse s’en passer) et ça ne prends pas en compte les nodes effectivements affichés.

Si vous avez d’autres solutions je suis preneur (je vais creuser le module quick_find si j’ai le temps)


Brice Favre
http://camera.obscura.fr/

#

Bonsoir Brice,

Je ne sais pas si j’ai bien compris ton probleme, mais tu souhaites afficher sur la page de ta vue deux listes déroulantes contenant des termes de taxonomies ?

Si c’est ça, alors, c’est simple à faire. Quand tu as crée ta vue, tu as indiqué des filtres de taxonomies pour filtrer tes champs. Clique sur le filtre que tu souhaites afficher à ton utilisateur et clique à droite sur le bouton ‘Exposer’ qui n’est pas très parlant quand on ne sait pas.

En espérant avoir bien compris ton besoin :)

Julien

Ideia.fr | Blog | Twitter

#

C’est exactement ça, je passait par les arguments et non les filtres. Ca m’a permis d’explorer l’API de la taxonomie.

Merci.

PS : Bon manque encore des possibilités de filtrer les termes en fonction de leurs utilisations mais ça peut sans doute se résoudre dans une fonction preprocess.


Brice Favre
http://camera.obscura.fr/

Syndiquer le contenu