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

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

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



답변

이 기능을 사용하여 용어 이름에서 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;
}

답변

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

$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);

답변

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

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

답변

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


답변