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:
- Создайте отдельный режим отображения (возможно, назовите его "тизер") в настройках "Структура"> "Типы содержимого"> "Тип родительского содержимого".
- Затем создайте шаблон ветки для типа узла и режима отображения (статья - teaser.html.twig). В нем вы можете вывести
related_article
div с обработчиком кликов. - Затем в существующем родительском шаблоне ветки типа узла вы можете просто вывести
{{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 %}
Я думаю, что первый параметр в пути - это строка, определяющая тип пути, а не значение объекта.