2014-09-06 4 views
0

Мне нужно знать, как я могу получить идентификатор словаря из идентификатора узла в page.tpl.php в drupal 7.Как получить идентификатор словаря из идентификатора узла в drupal 7?

У меня есть эта структура в моем drupal.

например. Существует два типа контента

  1. Content1
  2. Content2

  3. Content1 есть словарь под названием "vocab1" и "vocab2".

  4. Теперь «Vocab1» имеет термины «term1» и «term2».
  5. и «Vocab2» имеют термины «term3» и «term4».

Аналогично

  1. Content2 есть словарь под названием "vocab3" и "vocab4".
  2. Теперь «Vocab3» имеет термины «term5» и «term6».
  3. и «Vocab4» имеют термины «term7» и «term8».

Теперь я добавляю узел, используя тип содержимого «Content2» с выбором «term7». Теперь я пытаюсь получить этот идентификатор словаря на page.tpl.php, но я не нашел никакого решения.

Я искал и не нашел решения.

Существует один раствор

т.е.

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

Но для получения таким образом, мне нужно поставить вручную Поле "field_my_vocabulary". Но «field_my_vocabulary» может быть различным для каждого узла, поскольку связанный словарь будет другим. и я хочу это динамически.

Существует функция доступна в Drupal 6 т.е. taxonomy_node_get_terms() для возвращения всех терминов, связанных с идентификатором узла, но эта функция не доступна в Drupal 7.

Пожалуйста, помогите.

Thanks, Sunil.

ответ

1

Вот 2 способа, как вы можете получить их в page.tpl.php:

  • вы можете получить nid из URL с arg функции,

пример:

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; 
}