it-swarm-eu.dev

Jak nastavit taxonomický termín programově pro uzel?

Vytvořil jsem taxonomické termíny a přiřadil jsem jej k typu obsahu 'Article' pomocí pole reference termínu. Uzly jsem vytvořil programově, ale jak nastavit taxonomické termíny pro uzly?

Taxonomické pojmy jsou již vytvořeny. Chci nastavit taxonomický termín pro uzel programově.

18
Ranjani

Pomocí této funkce získáte ID z Termname

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

Když program vytvoříte programově, můžete jej přiřadit k jakémukoli podobnému výrazu:

$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);
15
Petro Popelyshko

K dosažení toho můžete použít obálky metadat entity , např .:

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

Při přidávání výrazů jsem zjistil, že musím přidat $ term-> parent = array (0), jinak se tabulka taxonomy_term_hierarchy neaktualizuje správně a výrazy se nezobrazují na stránce seznamu adminů pro tento slovník.

1
user3425125