如何在Twig模板中获取节点URL?


22

我正在尝试在Twig模板中获取节点URL。{{ content.node_link }}返回完整链接,但我只需要URL。

如何检索节点URL?


4
如果查看节点模板,您将看到这url是一个可用变量。因此{{ url }},例如简单地打印将呈现原始URL,/node/[nid]/node/30没有任何包装标记。那是你要做什么?
丹尼·英格兰

Answers:



11

在node.html.twig中,您可以直接使用 {{ url }}

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

有关更多信息,请参阅核心模板中的注释/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 }}

您应该更多地解释您的答案,而不是“简单地”。解释(例如@Danny Englander在问题注释中写的内容)可以帮助询问者和其他人进一步了解您如何提出答案以及他们将来如何自助。
mradcliffe

这是最简单的方法,在节点细枝模板中使用内置变量。
埃里克·斯坦伯恩

那应该是公认的答案
Capsule '18

7

我发现此解决方案有效,但令人费解。

{{ path('entity.node.canonical', {'node': content['#node'].id()  }) }}

4
您可以使用node.id代替content['#node'].id()
2016年

2
我正在使用展示套件模板工作,并且“节点”不是可用键之一。{{dump(_context | keys)}}仅提供以下键:'content','theme_hook_original','attributes','title_attributes','content_attributes','title_prefix','title_suffix','db_is_active','is_admin' ,“ logged_in”,“用户”,“目录”,“设置”,“布局”,“#cache”,“ theme_hook_suggestions”
直到2016年

展示套件模板的绝佳解决方案。@ 4k4 content['#node'].id()对于DS上下文是正确的。
masterchief
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.