Comment puis-je uniquement imprimer des catégories qui appartiennent à la publication actuelle? Cet extrait montre toutes les catégories du site

J'ai cet extrait qui montre toute la list de taxonomie du site, qui appartient à un vocabulaire spécifique. Au lieu d'imprimer toute la list, comment puis-je simplement imprimer les termes qui appartiennent au noeud que je charge réellement? J'ai une installation Drupal 7.

C'est ainsi que j'imprime l'identifiant du noeud auquel je suis: <?php print $node->nid;?>

 <?php $vid = 11; //vocabulary id $query = "SELECT tid, name, count FROM ( SELECT td.tid AS tid, name, COUNT(td.tid) AS count FROM taxonomy_term_data AS td JOIN taxonomy_index AS tn ON td.tid = tn.tid JOIN node AS n ON n.nid = tn.nid WHERE td.vid = ". $vid ." AND n.status = 1 GROUP BY td.tid ORDER BY count DESC ) AS t ORDER BY name ASC"; $result = db_query($query); foreach($result as $term) { if ($term->count > 0) { echo l($term->name, "taxonomy/term/$term->tid").' ('.$term->count.')'.'<br/>'; } } ?> 

Je suggérerais de ne pas exécuter une requête supplémentaire pour cela. Cette information devrait être disponible dans l'object $ node.

Il suffit de l'imprimer [print_r ($ node)] et de voir exactement le nom de l'object de taxonomie ($ node-> taxonomy) et comment les informations de taxonomie sont structurées et utilisent cela pour afficher la catégorie sur la page du noeud ou le teaser du noeud.

Sur d'autres pages, vous pouvez utiliser node_load en 1ère charge du nœud puis faire la même chose.

La réponse de sumoand est plus optimale dans ce cas, cependant pour certains sql pratiquer ici est la solution exacte comme vous l'avez imaginé:

 <?php $vid = 11; //vocabulary id $query = "SELECT tid, name, count FROM ( SELECT td.tid AS tid, name, COUNT(td.tid) AS count FROM taxonomy_term_data AS td JOIN taxonomy_index AS tn ON td.tid = tn.tid JOIN node AS n ON n.nid = tn.nid WHERE td.vid = ". $vid ." AND n.status = 1 AND n.nid = ".$node->id." GROUP BY td.tid ORDER BY count DESC ) AS t ORDER BY name ASC"; $result = db_query($query); foreach($result as $term) { if ($term->count > 0) { echo l($term->name, "taxonomy/term/$term->tid").' ('.$term->count.')'.'<br/>'; } } ?>