Drupal 8 - Получить URL-адрес узла в ветке

У меня есть тип контента, ссылающийся на другой тип контента (пара статей), который ссылается на тип контента (статья).

Я хотел бы перенаправить на URL статьи, когда щелкнул блок статьи на моей ветке, поэтому я пришел с кодом ниже

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

К сожалению, это не работает, я получил сообщение о том, что маршрут не существует.

Как я могу сослаться на URL моей статьи с такой сложной структурой?

1 ответ

Решение

Есть два разных подхода, которые вы можете использовать, чтобы получить ссылку на узел / сущность для вывода:

  • Опция 1:

    1. Создайте отдельный режим отображения (возможно, назовите его "тизер") в настройках "Структура"> "Типы содержимого"> "Тип родительского содержимого".
    2. Затем создайте шаблон ветки для типа узла и режима отображения (статья - teaser.html.twig). В нем вы можете вывести related_article div с обработчиком кликов.
    3. Затем в существующем родительском шаблоне ветки типа узла вы можете просто вывести{{field_articles_pairs}} поскольку он будет проходить по циклу и извлекать пользовательский шаблон ветки для каждого объекта статьи, на который есть ссылка в поле.
  • Вариант 2:

Добавьте пользовательские функциональные возможности узла предварительной обработки для ссылочного / родительского типа контента, чтобы включить URL-адреса с каждым значением field_articles.

Я считаю, что это должен быть синтаксис?

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

Я думаю, что первый параметр в пути - это строка, определяющая тип пути, а не значение объекта.

Другие вопросы по тегам