it-swarm.com.de

Wie kann ein Taxonomiebegriff programmgesteuert für einen Knoten festgelegt werden?

Ich habe Taxonomiebegriffe erstellt und sie mithilfe des Begriffsreferenzfelds einem Inhaltstyp 'Artikel' zugewiesen. Ich habe Knoten programmgesteuert erstellt, aber wie werden Taxonomiebegriffe für die Knoten festgelegt?

Die Taxonomiebegriffe sind bereits erstellt. Ich möchte den Taxonomiebegriff für einen Knoten festlegen programmgesteuert.

17
Ranjani

Verwenden Sie diese Funktion, um die ID von Termname abzurufen

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

Wenn Sie einen Knoten programmgesteuert erstellen, können Sie ihn einem beliebigen Begriff wie dem folgenden zuweisen:

$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

Sie können einige Entity Metadata Wrapper verwenden, um dies zu erreichen, z.

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

Beim Hinzufügen von Begriffen musste $ term-> parent = array (0) hinzugefügt werden, da sonst die Tabelle taxonomy_term_hierarchy nicht ordnungsgemäß aktualisiert wird und die Begriffe auf der Seite mit der Administratorliste für dieses Vokabular nicht angezeigt werden

1
user3425125