3

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

当我的树枝上点击文章块时,我想重定向到文章网址,所以我想出了下面的代码

{% 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>

不幸的是,这不起作用,我收到一条错误消息,指出该路线不存在。

我怎样才能引用具有这种复杂结构的文章网址?

4

2 回答 2

4

我相信这应该是语法?

{% 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 %}

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

于 2019-03-12T19:21:15.630 回答
3

您可以使用两种不同的方法来获取输出的节点/实体参考 url:

  • 选项1:

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

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

于 2018-03-17T16:06:27.843 回答