Saltar al contenido

Drupal: ¿Cómo establezco programáticamente un término de taxonomía para un nodo?

Solución:

En Drupal 7, existían campos de referencia de taxonomía que usaban el patrón ['tid' => NUMBER]. Estos son campos de referencia de entidad. EntityReferenceItem tiene las definiciones de propiedad: target_id y entity. El primero es un número entero o una cadena según la configuración del elemento de referencia de la entidad (básicamente el tipo de entidad de configuración / contenido).

Esta también es una pregunta similar a Cómo establecer un valor para un campo multivalor en drupal 8 mediante programación

Así que intenta usar el patrón

Como parte de Entity :: create

Node::create([
  'field_meldungstyp' => [['target_id' => 19]]
]);

Usando FieldableEntityInterface :: set

$entity->set('field_meldungstyp', ['target_id' => 19]);

Usando TypedDataInterface :: setValue en el elemento de campo directamente.

$entity->field_meldungstyp->setValue(['target_id' => 19]);

Con método mágico

$entity->field_meldungstyp->target_id = 19;

Tenga en cuenta que esto sobrescribe los valores actuales del campo.

Debe ser una matriz anidada.

'field_meldungstyp'  => [
      ['target_id' => 12345]
    ]

Prueba esto:

$node = Node::create(array(
    'type' => 'detailseite',
    'title' => $data[$headlineIndex],
    'langcode' => 'de',
    'uid' => '1',
    'status' => 1,
    'field_headline' => $data[$headlineIndex],
    'field_intro' => $data[$introIndex] . $categories[$data[$categoryIndex]],
    'created' => $data[$dateIndex],
    'field_autor' => $data[$autorIndex],
    'field_teaser_text' => $data[$shortIndex],
    'field_meldungstyp'  => [
      ['target_id' => 12345]
    ]
));
$node->save();

Así es como lo hice para D8.

use DrupalnodeEntityNode;

//To create new node
$node = Node::create(['type' => 'YOUR_CONTENT_TYPE_HERE']);

//To load a node by its ID
//$node = DrupalnodeEntityNode::load(NODE_ID);

$nodeTerms = [1,2,3...]; // 1,2,3 = terms IDs
$node->set('YOUR_FIELD_OF_TERMS', $nodeTerms);
$node->save();

// Para crear un nuevo impuesto

use DrupaltaxonomyEntityTerm;

$new_term = Term::create([
    'vid' => "YOUR_VOCABULARY_MACHINE_NAME",
    'name' => "NAME_OF_YOUR_TERM",
]);
$new_term->save();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *