Jak uzyskać etykietę typu węzła z obiektu węzła?

12

Próbuję uzyskać etykietę pakietu (etykietę typu węzła) węzła z obiektu węzła w Drupal 8.

Działa to, ale wydaje się długie:

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

Czy istnieje inny sposób uzyskania etykiety pakietu, możliwy w mniej skomplikowany sposób?

oknate
źródło
6
$node->type->entity->label();jest może nieco bardziej wdzięczny? Nie jestem pewien, czy istnieje obecnie krótsza wersja
Clive
2
Działa również w szablonie gałązka: {{node.type.entity.label}}
oknate

Odpowiedzi:

15

Poniższy kod działa, jak wskazano w @Clive .

$type_name = $node->type->entity->label();
Bez sssweat
źródło
Pracuje dla mnie. Dzięki
Hassan Farooq,
8

Jeśli potrzebujesz nazwy komputera typu węzła w szablonie Twig:

{{ node.getType }}
Alberto Galvis
źródło
6

Jeśli chcesz etykietę w gałązce

{{ node.type.entity.label }}
GiorgosK
źródło
5

Wypróbuj ten kod.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();
MrD
źródło
2
To ładuje wszystkie typy węzłów tylko po to, aby uzyskać etykietę jednego. nieco nieefektywny, lepiej po prostu załadować ten, który chcesz.
Berdir
Zgodzić się! To po prostu bazuje na kodzie @No Sssweat.
MrD
@Berdir thx za zwrócenie na to uwagi. Nie chcę kameleon pytania, więc zostawię to jako przyjętą odpowiedź. Zamiast tego używam kodu we własnej odpowiedzi.
Bez Sssweat
2

Jest do tego funkcja

node_get_type_label($node);
Emil Stoianov
źródło