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 моей статьи с такой сложной структурой?


person Tibo    schedule 16.03.2018    source источник


Ответы (2)


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

  • Вариант 1:

    1. Create a separate display mode (maybe name it "teaser") under the Structure > Content Types > [Parent Content Type] settings.
    2. Затем создайте шаблон ветки для типа узла и режима отображения (статья --teaser.html.twig). В нем вы можете вывести related_article div с обработчиком кликов.
    3. Затем в вашем существующем шаблоне ветки типа родительского узла вы можете просто вывести {{field_articles_pairs}}, поскольку он будет циклически выполняться и извлекать пользовательский шаблон ветки для каждого объекта статьи, указанного в поле.
  • Вариант 2:

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

person Anson W Han    schedule 17.03.2018
comment
Я действительно создаю предварительный процесс, спасибо за ваш ответ - person Tibo; 29.03.2018

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

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

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

person George Potter    schedule 12.03.2019