【问题标题】:Drupal 8 - Get a node url in twigDrupal 8 - 在树枝中获取节点网址
【发布时间】:2018-08-25 17:24:54
【问题描述】:

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

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

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

很遗憾,这不起作用,我收到一条错误消息,提示该路线不存在。

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

【问题讨论】:

    标签: drupal twig drupal-8 drupal-nodes


    【解决方案1】:

    我相信这应该是语法?

    {% 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 中的第一个参数是定义路径类型的字符串,而不是实体的值。

    【讨论】:

      【解决方案2】:

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

      • 选项 1:

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

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

      【讨论】:

      • 我最终确实创建了一个预处理,感谢您的回答
      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多