노드에 프로그래밍 방식으로 분류 용어를 설정하는 방법은 무엇입니까?


18

분류 용어를 작성하고 용어 참조 필드를 사용하여 컨텐츠 유형 ' 기사 '에 지정했습니다 . 프로그래밍 방식으로 노드를 만들었지 만 노드에 대한 분류 용어를 설정하는 방법은 무엇입니까?

분류 용어는 이미 작성되었습니다. 프로그래밍 방식 으로 노드의 분류 용어를 설정하고 싶습니다 .

답변:


17

이 기능을 사용하여 용어 이름에서 ID를 가져옵니다.

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

나는 그 다양성 (다른 부분)을 좋아하기 때문에 용어를 추가합니다.
Eduardo Chongkan

15

프로그래밍 방식으로 노드를 작성할 때 다음과 같은 용어에 노드를 지정할 수 있습니다.

$node = new stdClass();
$node->type = 'YOUR_CONTENT_TYPE_NAME';
$node->title = 'title';

$node->language = LANGUAGE_NONE;
node_object_prepare($node);

//id of your taxonomy term
$tid = 1;

//add term to a node field
//field_yourfield_name - machine name of your term reference field

$node->field_yourfield_name[$node->language][0]['tid'] = $tid;
node_save($node);

1
@ neok.Thanks. 용어 id를 사용하면 잘 작동하지만 용어 이름을 설정하는 방법은 무엇입니까? $ node-> field_yourfield_name [$ node-> language] [0] [ 'name'] = $ termname과 같습니다.
Ranjani 2016 년

2
drupal 7에서 분류 ID 대신 분류 용어를 사용하여 노드를 프로그래밍 방식으로 태그하는 방법을 아는 사람이 있습니까?
Ranjani

@pretty taxonomy_get_term_by_name을 사용하여 용어 객체를 얻은 다음 tid를 사용하십시오.
Lee Woodman

2

이를 위해 몇 가지 엔티티 메타 데이터 랩퍼 를 사용할 수 있습니다 .

try {
  $w_node = entity_metadata_wrapper('node', $entity);
  $w_some_term = entity_metadata_wrapper('taxonomy_term', 1234);
  $w_node->field_term_ref = $w_some_term->tid->value();
  $w_node->save();
} catch (Exception $e) {
  drupal_set_message(t('Error for node: @title, message: @error.',
        array('@title' => $w_node->title->value(), '@error' => $e->getMessage())), 'error');
  watchdog_exception('foo', $e);
}

1
EMW 사용시 +1 또한 편리한 메소드 인 getIdentifier ()를 사용하는데, 이는보다 한 단계 적은 것 $w_some_term->tid->value()입니다. 다음은 이 개념을 훨씬 더 잘 이해하고 EMW를 사용할 때 정기적으로 참조 할 수 있는 훌륭한 기사 입니다.
scotself

1

용어를 추가 할 때 $ term-> parent = array (0)을 추가해야한다는 것을 알았습니다. 그렇지 않으면 taxonomy_term_hierarchy 테이블이 제대로 업데이트되지 않고 해당 단어에 대한 관리 목록 페이지에 용어가 표시되지 않습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.