답변:
분류 용어는 Drupal 7의 필드에서 구현됩니다. 컨텐츠 유형에 대해 field_category라는 분류 필드를 정의했다고 가정하면 다음과 같이 액세스 할 수 있습니다.
$language = 'und'; // or will be provided by some Drupal hooks
foreach ($node->field_category[$language] as $delta => $value) {
$term = taxonomy_term_load($value['tid']);
}
필드 이름에 액세스 할 수없는 경우 노드에 대한 가장 쉬운 방법 은 데이터베이스를 직접 쿼리하는 것입니다.
$results = db_query('SELECT tid FROM {taxonomy_index} WHERE nid = :nid', array(':nid' => $node->nid));
foreach ($results as $result) {
$term = taxonomy_term_load($result->tid);
}
그러나 분류법 필드가 두 개 이상인 경우 다른 어휘에서 나오는 용어를 뒤섞을 수 있습니다.
taxonomy_term_load_multiple($results->fetchCol());
단일 쿼리에서 용어를로드하는 데 사용할 수 있습니다 .
field_get_items('node', $node, 'field_category')
올바른 언어로 필드를 얻을 수 있습니다.
다음은 필드 이름을 지정하지 않고 db_query를 지정하지 않고 모든 용어를 가져 오는 매우 일반적인 방법입니다.
function example_get_terms($node) {
$terms = array();
foreach (field_info_instances('node', $node->type) as $fieldname => $info) {
foreach (field_get_items('node', $node, $fieldname) as $item) {
if (is_array($item) && !empty($item['tid']) && $term = taxonomy_term_load($item['tid'])) {
$terms[] = $term->name;
}
}
}
return $terms;
}
if (arg(0) == 'node' && is_numeric(arg(1))) {$nid = arg(1);}
를 얻을 수 nid
및 $node = node_load($nid);
함수 작업을하기 위해서이다.