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.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

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 :
<?phpecho 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 :
<?phpfunction 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/
bricef
135
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
JulienD
319
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/
bricef
135