Cómo obtener el nombre del tipo de contenido legible por humanos en una plantilla de nodo

14

He creado una plantilla de nodo para mi nodo, y está funcionando bien.

Necesito imprimir el nombre del tipo de contenido, que es como "Whitepaper" y tiene el nombre de máquina "w1" en mi plantilla de nodo. Si uso variable {{ node.bundle }}, está imprimiendo el nombre de la máquina. Pero necesito el nombre legible para humanos .

Probé muchos elementos de nodo, contenido y variables de página, pero no puedo imprimir el nombre del tipo de contenido legible por humanos.

¿Alguien puede ayudar?

Dev
fuente

Respuestas:

22

Debería poder obtener el nombre legible para humanos del tipo de contenido (o la "etiqueta") utilizando el siguiente fragmento de código en la plantilla Twig de su nodo.

{{ node.type.entity.label }} 
edwardchiapet
fuente
2
sí, esta es la solución más fácil, no se me ocurrió usar este campo haciendo referencia al tipo de nodo
4k4
2
Lo intenté, {{node.label}} que estaba devolviendo el nombre de la máquina, {{node.type.entity.label}} cumplió mi propósito, gracias :)
Dev
4

Puede agregar el nombre legible por humanos del tipo de contenido en un enlace de preproceso:

mytheme.theme

/**
 * Implements hook_preprocess_node().
 */
function mytheme_preprocess_node(array &$variables) {
  $node = $variables['node'];
  $variables['content_type'] = node_type_load($node->bundle())->label();
}

y usarlo en la plantilla de nodo:

{{ content_type }}
4k4
fuente
1
Solo para que el registro node_type_load esté en desuso, debe usar NodeType :: load () en su lugar.
Insasse