내가 원하는 것을하는 것처럼 보이는 taxonomy.module 함수 목록의 유일한 함수 는 개인 함수 인 것 같습니다 ( _taxonomy_get_tid_from_term ).
분류법 용어 이름 만 알고 ID를 찾아야하는 경우 어떤 기능을 사용해야합니까?
내가 원하는 것을하는 것처럼 보이는 taxonomy.module 함수 목록의 유일한 함수 는 개인 함수 인 것 같습니다 ( _taxonomy_get_tid_from_term ).
분류법 용어 이름 만 알고 ID를 찾아야하는 경우 어떤 기능을 사용해야합니까?
답변:
그것은의 taxonomy_get_term_by_name () 다음의 코드와 같이 사용합니다.
$term_array = taxonomy_get_term_by_name('Foo');
$term = reset($term_array); # get the first element of the array which is our term object
print $term->name;
foreach ($terms as $term)
하여을 확인 $term->vid
당신이 권리를 가지고 있는지 확인 할 수 있습니다.
taxonomy_get_term_by_name()
트릭을 할 것입니다 :
$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
$first_term = array_shift($terms);
print $first_term->tid;
}
$first_term = array_shift($terms);
이 기능은 저에게 효과적이었습니다.
/**
* Return the term id for a given term name.
*/
function _get_tid_from_term_name($term_name) {
$vocabulary = 'tags';
$arr_terms = taxonomy_get_term_by_name($term_name, $vocabulary);
if (!empty($arr_terms)) {
$arr_terms = array_values($arr_terms);
$tid = $arr_terms[0]->tid;
}
else {
$vobj = taxonomy_vocabulary_machine_name_load($vocabulary);
$term = new stdClass();
$term->name = $term_name;
$term->vid = $vobj->vid;
taxonomy_term_save($term);
$tid = $term->tid;
}
return $tid;
}
다른 어휘를 사용하는 경우 (태그와 다른) 행 위의 코드에서 수정하십시오.
$vocabulary = 'tags';
$foo[0]->tid
TID로 키가 지정된 배열을 반환하기 때문에 아무것도하지 않습니다. 그래서 TID를 얻으려면 TID가 필요합니까,foreach()
심지어 하나의 항목에만 있지만합니까? 그렇지 않으면 :Undefined offset: 0