2014-09-06 112 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; 
} 
相關問題