¿Cómo obtengo la etiqueta de tipo de nodo de un objeto de nodo?

12

Estoy tratando de obtener la etiqueta del paquete (etiqueta de tipo de nodo) del nodo de un objeto de nodo en Drupal 8.

Esto funciona, pero parece largo aliento:

$node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name');

¿Hay otra forma de obtener la etiqueta del paquete, posible de una manera menos complicada ?

oknate
fuente
66
$node->type->entity->label();es un poco más elegante quizás? No estoy seguro de que hay una versión más corta actualmente
Clive
2
También funciona en la plantilla de ramita: {{node.type.entity.label}}
oknate

Respuestas:

14

El siguiente código funciona, como se señaló en @Clive .

$type_name = $node->type->entity->label();
No Sssweat
fuente
Funciona para mi. Gracias
Hassan Farooq
8

En caso de que necesite el nombre de máquina del tipo de nodo en la plantilla Twig:

{{ node.getType }}
Alberto Galvis
fuente
6

Si quieres la etiqueta en ramita

{{ node.type.entity.label }}
GiorgosK
fuente
5

Prueba este código.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();
MrD
fuente
2
Eso carga todos los tipos de nodos solo para obtener la etiqueta de uno. un poco ineficiente, mejor simplemente cargar el que quieras.
Berdir
¡De acuerdo! Es solo base en el código de @No Sssweat.
MrD
@ Berdir gracias por señalar eso. No quiero camaleón la pregunta, así que dejaré esto como la respuesta aceptada. En su lugar, estoy usando el código en mi propia respuesta.
No Sssweat
2

Hay una función para eso

node_get_type_label($node);
Emil Stoianov
fuente