¿Cómo agregar una variable a una plantilla de campo de ramita?

9

En una página de nodo, me gustaría agregar el título del nodo a la salida junto con otro campo (el campo de ejemplo).

He creado una nueva field--field-example.html.twigpero no puedo acceder a la variable de título del nodo, ya que no está disponible en la plantilla de campo.

Tengo que añadir las variables en el proceso previo tema themename.theme.

¿Cómo agrego la variable themename.themey cuál sería la entrada correspondiente en el field--field-example.html.twig?

Taylor Taff
fuente
Use hook_preprocess_node para extraer el valor del campo que le gustaría usar en la plantilla.
@ IvanJaros, he actualizado la pregunta ahora.
Taylor Taff

Respuestas:

15

Dado que solicitó pasar el título del nodo como una variable a través del archivo .theme, puede usar template_preprocess_field para hacer algo como esto:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

entonces en su field--field-example.html.twigsimplemente podría usar {{node_title}}para representar el título del nodo.

También vea la respuesta de 4k4 a continuación.

Janey
fuente
Traté de editar su respuesta para incluir la proporcionada por 4k4, ya que es correcta, pero mi edición fue rechazada ya que se consideró no relevante ...
Taylor Taff
@TaylorTaff, ¿quién aprueba las ediciones? Nunca lo vi Intentará editar para incluir la respuesta a continuación.
Janey
@Janey, muchos usuarios con suficientes insignias pueden revisar tales ediciones. He marcado sus respuestas para futuras revisiones. Una pregunta más: ¿Están seguros de que $variables['element']['#object']->getTitle();se puede atrapar preprocess_field? Porque esto realmente respondería a mi pregunta aquí: drupal.stackexchange.com/questions/197497/…
nilsun
11

Hay un objeto de nodo disponible en las variables de la plantilla de campo, por lo que no necesita una función de preproceso.

Para obtener el título del nodo en una plantilla de campo:

{{ element['#object'].label }}
4k4
fuente
Esto responde a la pregunta, pero como la otra respuesta de Janey será más útil, agregué esto a esa respuesta y marqué como aceptado.
Taylor Taff
1
Pero su pregunta estaba bajo una suposición incorrecta: "pero no puedo acceder a la variable de título del nodo ya que no está disponible en la plantilla de campo".
4k4
Sí 4k4, tienes razón, mi pregunta era incorrecta.
Taylor Taff