Drupal 8 - 在twig中获取节点url

3

我有一个内容类型,引用另一个内容类型(一对文章),该文章又引用了一个内容类型(一篇文章)。

当在我的twig上单击文章块时,我希望重定向到文章网址,因此我想出了以下代码:

{% for i, value in node.field_articles_pairs %}

    <div class="related_article" onclick="onArticleClick({{ path('value.entity.field_articles[0]entity.node.canonical', {'node': node.id}) }})">

    </div>

    <div class="related_article" onclick="onArticleClick({{ path('value.entity.field_articles[0]entity.node.canonical', {'node': node.id}) }})">

    </div>

{% endfor %}

<script>
    function onArticleClick(link) {
        window.location.href = link;
    }
</script>

很遗憾,这个不起作用,我收到了一个错误,说路由不存在。
如何使用这个复杂结构引用我的文章网址?
2个回答

5
我认为这应该是正确的语法?
{% for article_pair in node.field_articles_pairs %}
  {% for article in article_pair.entity.field_articles %}
    {{ path('entity.node.canonical', {'node': article.entity.id}) }}
  {% endfor %}
{% endfor %}

我认为路径中的第一个参数是定义路径类型的字符串,而不是实体值。


3

有两种不同的方法可以用于获取节点/实体引用的URL以进行输出:

  • 选项1:

    1. 在“结构”>“内容类型”>[父级内容类型]设置下创建一个单独的显示模式(可能命名为“teaser”)。
    2. 然后创建一个节点类型和显示模式特定的twig模板(article--teaser.html.twig)。在其中,您可以使用点击处理程序输出related_article div。
    3. 然后在现有的父节点类型twig模板中,您可以简单地输出{{field_articles_pairs}},因为它将循环遍历并拉取字段中引用的每个文章实体的自定义twig模板。
  • 选项2:

为引用/父内容类型添加自定义预处理节点功能,以包括每个field_articles值的URL。


1
我最终确实创建了一个预处理器,感谢你的回答。 - Tibo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接