Como obtenho o URL do nó em um modelo Twig?

22

Estou tentando obter a URL do nó em um modelo Twig. {{ content.node_link }}retorna o link completo, mas eu preciso apenas do URL.

Como recupero o URL do nó?

inalto
fonte
4
Se você olhar no modelo de nó, verá que urlé uma variável disponível. Assim, a simples impressão, {{ url }}por exemplo, renderiza o URL bruto, /node/[nid]ou seja , /node/30sem nenhuma marcação de quebra automática. É isso que você está procurando fazer?
Danny Englander

Respostas:

30

De acordo com Funções - Nos modelos Twig, você pode usar é simples,

 {{ path('entity.node.canonical', {'node': node.id}) }}
Yusef
fonte
3
Esta solução funciona e é bem legal. Mas usar {{url}} em um node--modelo de galho baseado fornecerá o mesmo resultado.
Eric Steinborn
11

Em um node.html.twig, você pode usar diretamente {{ url }}

<a href="{{ url }}">read more</a>

Para mais informações, leia o comentário no modelo principal /core/modules/node/templates/node.html.twig:

{#
/**
 * @file
 * Default theme implementation to display a node.
 *
 * Available variables:
 * - node: The node entity with limited access to object properties and methods.
 * ...
 * - url: Direct URL of the current node.
 * ...
#}
...

<article{{ attributes }}>

  {{ title_prefix }}
  {% if not page %}
    <h2{{ title_attributes }}>
      <a href="{{ url }}" rel="bookmark">{{ label }}</a>
    </h2>
  {% endif %}
  {{ title_suffix }}
toto21
fonte
Você deve explicar sua resposta mais do que "simplesmente colocar". Uma explicação, como o que @Danny Englander escreveu no comentário da pergunta, ajuda o solicitante e outros a aprender mais sobre como você apresentou sua resposta e como eles podem ajudar a si mesmos no futuro.
Mestrcliffe
Este é o método mais fácil, usando uma variável interna no modelo de nó do ramo.
Eric Steinborn
Essa deve ser a resposta aceita
Capsule
7

Eu encontrei esta solução que funciona, mas é bastante complicada.

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}
inalto
fonte
4
Você pode usar em node.idvez decontent['#node'].id()
4k4
2
Estou trabalhando com um modelo de conjunto de exibição e 'node' não é uma das chaves disponíveis. {{dump (_context | keys)}} fornece apenas essas chaves: 'content', 'theme_hook_original', 'attribute', 'title_attributes', 'content_attributes', 'title_prefix', 'title_suffix', 'db_is_active', 'is_admin' , 'logado', 'usuário', 'diretório', 'configurações', 'layout', '#cache', 'theme_hook_suggestions'
inalto
Ótima solução para modelos de suítes de exibição. @ 4k4 content['#node'].id()está correto para o contexto do DS.
masterchief