Drupal中如何打印博客标签的URL别名?uri.value无法生效如何解决
问题原因&解决方法
1. 循环外代码失效问题
Twig 中for循环的迭代变量item属于局部作用域,仅在循环代码块内部可用,循环执行结束后变量就会被回收,因此你写在循环外的{{ item.entity.uri.value }}代码无法正常输出内容。
2. uri.value无法获取URL别名问题
Drupal 分类术语实体的uri.value默认返回的是内部路由格式(例如entity:taxonomy_term/123),并非前端可用的URL别名,可使用以下两种方案解决:
- 方案一:使用
path()函数生成相对路径别名
{% for item in node.field_tags %} {# 输出标签别名 + 标签名 #} {{ path('entity.taxonomy_term.canonical', {'taxonomy_term': item.entity.id}) }} {{ item.entity.name.value }} {% endfor %}
如果需要输出带站点域名的绝对URL,将path()替换为url()即可。
- 方案二:调用实体方法直接生成URL
{% for item in node.field_tags %} {{ item.entity.toUrl().toString() }} {{ item.entity.name.value }} {% endfor %}
内容的提问来源于stack exchange,提问作者Shradha Mankar
相关产品推荐
相关产品推荐

