2011-02-14 4 views

Répondre

3
$node = node_load($nid); 
$terms = field_view_field('node', $node, 'field_tags', array('default')); 
+0

J'ai lu ce livre aussi :) Mais est-ce la meilleure pratique? Je veux dire que cette fonction va récupérer un grand tableau multi-niveau (avec un objet dedans) et je dois chercher le terme ids manuellement. C'est juste un peu mieux de rechercher manuellement l'objet entier du noeud. – mimrock

+0

Vous pouvez chercher les tids de DB en utilisant 'SELECT field_tags_tid DE field_data_field_tags OU entity_type = 'noeud' ET entity_id = $ nid' en entrée. – rik

+0

Donc, vous voulez dire qu'il n'y a pas de fonctions pour cela dans l'API Drupal-7? Une fonction qui obtient le terme ids à partir d'un champ donné (terme-référence) suffirait ... C'est étrange pour moi s'il n'y a pas une telle chose dans drupal7. – mimrock

0

Où voulez-vous obtenir ces termes? Dans un module, un thème ...?

Avez-vous jetez un oeil à: http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module

+0

Dans un module. J'ai besoin d'une fonction quelque chose comme taxonomy_node_get_terms() dans drupal-6. J'ai déjà vérifié le document API. Il est possible que je sois négligent, mais je n'ai rien trouvé pour moi. – mimrock

0

La table field_data_field_tags couvre tout le champ par défaut Tags, qui pourrait ou ne pourrait pas exister et vous pourriez avoir d'autres taxonomies aussi.

Cependant, taxonomy.module maintient encore les tables taxonomy_term_data/taxonomy_index que vous pouvez interroger:

SELECT tid FROM {taxonomy_index} WHERE nid = :nid 

Ou si vous voulez un vocabulaire spécifique ID:

SELECT ti.tid FROM {taxonomy_index} ti INNER JOIN {taxonomy_term_data} ttd ON ttd.tid = ti.tid WHERE ti.nid = :nid AND vid = :vid 

complètement non testé.

Questions connexes