我需要知道如何从drupal 7中page.tpl.php中的节点id获取词汇id。
我的drupal中有这种结构。
e.g。有两种内容类型
内容2
Content1的词汇名为" vocab1"和" vocab2"。
类似地
现在我使用内容类型添加节点" Content2"选择" term7"。现在我尝试在page.tpl.php上获取该词汇表ID,但我没有找到任何解决方案。
我搜索过,但我找不到任何解决方案。
有一个解决方案
即
$field = $node->field_my_vocabulary;
$terms_en = $field['en'];
但是为了获得这种方式,我需要手动放置字段" field_my_vocabulary"。但是" field_my_词汇"每个节点可以是不同的,因为相关的词汇表将是不同的。我想动态地想要这个。
drupal 6中有一个函数,即taxonomy_node_get_terms(),用于返回与节点id相关的所有术语,但这个函数在drupal 7中不可用。
请帮忙。
谢谢, 苏尼。
答案 0 :(得分:1)
以下有两种方法可以在page.tpl.php
中获取它们:
nid
示例:
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;
}