2014-09-06 77 views
0

我需要知道如何从drupal 7中的page.tpl.php中的节点标识获取词汇标识。如何从drupal 7中的节点ID获取词汇ID?

我在我的drupal中有这个结构。

例如有两个内容类型

  1. 内容1
  2. 内容2

  3. 内容1已词汇命名为 “vocab1” 和 “vocab2”。

  4. 现在“Vocab1”有术语“term1”和“term2”。
  5. 和“Vocab2”有术语“term3”和“term4”。

同样

  1. 内容2已词汇命名为 “vocab3” 和 “vocab4”。
  2. 现在“Vocab3”有术语“term5”和“term6”。
  3. 和“Vocab4”有术语“term7”和“term8”。

现在我使用内容类型“Content2”添加节点并选择“term7”。现在我尝试在page.tpl.php上获得该词汇id,但我没有找到任何解决方案。

我搜索,我没有找到任何解决方案。

有一个解决方案

$field = $node->field_my_vocabulary; $terms_en = $field['en'];

但为获得这种方式,我需要手动将字段 “field_my_vocabulary”。但是,对于每个节点,“field_my_vocabulary”可能不同,因为关联词汇表会有所不同。我想动态地。

有在Drupal 6个即taxonomy_node_get_terms()返回与节点ID相关联的所有方面能够使用的功能,但该功能在Drupal 7

请帮忙不可用。

感谢, 苏尼尔。

回答

1

这里有2种方式如何让他们在page.tpl.php

  • 你可以从网址获得nidarg功能,

例如:

if (arg(0) == 'node' && is_numeric(arg(1))) { 
    $node = node_load(arg(1)); // we get the node object 
    //dpm($node); 

    // standart way 
    $nodeTermTid = $node->field_MY_TERM_FIELD['und'][0]['tid']; 
    $nodeTerm = taxonomy_term_load($nodeTermTid); 

    // with entity_metadata_wrapper function (from Entity API) 
    $nodeWrapper = entity_metada_wrapper('node', $node); 
    $nodeTerm = $nodeWrapper->field_MY_TERM_FIELD->value(); 

    $vocabularyId = $nodeTerm->vid; // if yoy need a vocabulary id 
    // or 
    $vocabularyMachineNmae = $nodeTerm->vocabuary_machine_name; 
} 

例如:

$node = menu_get_object(); 
if ($node != null) { 
    // standart way 
     $nodeTermTid = $node->field_MY_TERM_FIELD['und'][0]['tid']; 
     $nodeTerm = taxonomy_term_load($nodeTermTid); 

     // with entity_metadata_wrapper function (from Entity API) 
     $nodeWrapper = entity_metada_wrapper('node', $node); 
     $nodeTerm = $nodeWrapper->field_MY_TERM_FIELD->value(); 

     $vocabularyId = $nodeTerm->vid; // if yoy need a vocabulary id 
     // or 
     $vocabularyMachineNmae = $nodeTerm->vocabuary_machine_name; 
} 
相关问题