Como obtenho o rótulo do tipo de nó de um objeto de nó?

12

Estou tentando obter o rótulo do pacote (rótulo do tipo de nó) do nó a partir de um objeto de nó no Drupal 8.

Isso funciona, mas parece exagerado:

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

Existe outra maneira de obter o rótulo do pacote, possível de uma maneira menos complicada ?

oknate
fonte
6
$node->type->entity->label();é um pouco mais elegante, talvez? Não tenho certeza se há uma versão mais curta atualmente.
Clive
2
Também funciona no modelo de galho: {{node.type.entity.label}}
oknate 17/05/16

Respostas:

14

O código a seguir funciona, conforme apontado em @Clive .

$type_name = $node->type->entity->label();
Sem suor
fonte
Funciona para mim. Obrigado
Hassan Farooq
8

Caso você precise do nome da máquina do tipo de nó no modelo Twig:

{{ node.getType }}
Alberto Galvis
fonte
6

Se você quiser o rótulo em galho

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

Experimente este código.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();
MrD
fonte
2
Isso carrega todos os tipos de nós apenas para obter o rótulo de um. um pouco ineficiente, melhor apenas carregar o que você deseja.
Berdir 13/05/19
Aceita! É apenas baseado no código do @No Sssweat.
MrD 13/05/19
@Berdir thx por apontar isso. Eu não quero chamar a pergunta de camaleão, então deixarei isso como a resposta aceita. Estou usando o código na minha própria resposta.
No Sssweat
2

Existe uma função para isso

node_get_type_label($node);
Emil Stoianov
fonte