I have a content type with a field « referenced entity » called field_suggestion_articles.

User can choose related content and a view displays this list of related content at the bottom of the content. The views uses "content" (display mode, a template like teaser) and not fields.

enter image description here

I use a loop to display this list in node--article--related-content.html.twig:

{% for key,value in node.field_suggestion_articles.value %}
    {# display the title #}
    {{ content.field_suggestion_articles[key] }}

    {# display a text field #}

{% endfor %}

But I don’t know how to get the node urls of these related content.

When I dump node.field_suggestion_articles.value, I get the target_id of the node so I guess I should use it to retrieve the url. But I’ve tried a lot of solutions found on Drupal forums and here on stackExchange but without success.

Could you point me in the right direction ?

  • something like this? drupal.stackexchange.com/questions/202609/… so in your case {{ path('entity.node.canonical', {'node': node.field_suggestion_articles[key].entity.id}) }} should work i think – Leigh Jan 8 '20 at 10:59
  • @Leigh It works ! I've already seen this answer butI didn't adapt it correctly. Could you post an answer ? I will accept it. – Sébastien Gicquel Jan 8 '20 at 11:03
  • Rendering raw field values is unsafe. I would take a different approach. When you render the referenced entity in a view mode like teaser you get a second twig template specific to the referenced content type and this view mode, where you can render the fields of the children entity and also the url like Drupal does this for teasers out-of-the-box. – 4k4 Jan 8 '20 at 11:03
  • @4k4 Not sure to understand. You mean, I can use the native "link field" available in the view mode ? – Sébastien Gicquel Jan 8 '20 at 11:07
  • Not a field, in a node template the url is provided in a variable {{ url }}. – 4k4 Jan 8 '20 at 11:09

What they've done on this post should do the trick How do I get the node URL in a Twig template?

So in your case this should work:

{{ path('entity.node.canonical', {'node': node.field_suggestion_articles[key].entity.id}) }}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.