Доброго дня!
Уже не знаю даже где и правду искать, и гуглил, и яндексил - решения всё нет.
Суть вот в чём - использую множественные field collections для создания ноды, очень удобно, когда блоки одинаковые и нужно только менять их количество/содержание. Создал твиг файл для типа материала, вывожу в цикле по 1 записи, обрабатываю - всё ок. Но проблема в том, что сохраняются html-теги (), как их преобразовать в, собственно, html - ума не приложу. Пробовал и |raw, и |render, и через доп модуль |field_value - всё без толку.
Кто-нибудь сталкивался?
Комментарии
Ничего не понятно.
Есть шаблон типа материала.
В нём надо вывести поле так, чтобы не отображались html-теги, сейчас стоит в настройках filtered html, выводятся теги . Хочется, чтобы они обрабатывались и выводились нормально, как и должны.
Так и выведется. Непонятно зачем вы перебиваете шаблон и как. На дефолтной теме работает нормально?
Мне надо темизировать тип материала. Для этого создал файл node--articles.html.twig.
В нём вывожу нужные мне поля, но они выводятся текстом, например "Lores ipsum...", а мне надо, чтобы тег обработался и стал абзацем, как и должен
Как выводите поле в шаблоне ноды?
На дефолтной (бартик) всё хорошо, но как выведено там я и сам могу вывести, мне надо по-другому.
<?php
{% for field in node.field_collection_fields %}
{% set title = field.getFieldCollectionItem().field_block_title|field_value %}
{% set block_1 = field.getFieldCollectionItem().field_text_block_1|field_value %}
{% set block_2 = field.getFieldCollectionItem().field_text_block_2|field_value %}
{{ block_1 }}
{% endfor %}
?>
Так темизируйте не шаблон ноды, а шаблон field-collection.
Всё равно выводит текстом (пробовал там и render, и value). Как заставить его рендерить теги? Или это в принципе невозможно?
не совсем понял, что вы имеете в виду. Посмотрите дефолтный шаблон. Вы явно что-то не то деалете.
Постараюсь сейчас подробно рассказать.
В дефолтном шаблоне вывод ноды делается так: {{ content }} - и всё. Там сразу рендеренный вывод идёт.
Я же хочу сделать так - у меня есть коллекция полей, несколько таких коллекций. Я хочу пройтись по этому массиву в шаблоне node--articles.html.twig через foreach (ну, типа через foreach) и вывести в нужных местах нужные блоки.
Вот.
Отвечал вам выше. Темизируете шаблон field-collection, отдельно поля можно выводить как {{ content.field_NAME }}
Спасибо большое за помощь!
вам надо использовать другой шаблон
для управления показом полей или коллекции полей не нужно править node--type.html.twig
в этой статье - наводка на правильные имена файлов http://tlito.ru/node/285/
"Именование файлов шаблонов в Drupal 8"
Спасибо большое за помощь!
Сделал как вы сказали, создал отдельный файл, в котором и настроил вывод, но получается какая-то жесть.
Внутри цикла нужно сделать так:
<?php
{% set block_1 %}
{{ field.content['#field_collection_item'].field_text_block_1.value | raw }}
{% endset %}
?>
и только тогда получится вывести Full HTML без тегов, а в преобразованном виде.
Неужели в Drupal 8 нет более простого способа это сделать? Это же, мало того, что неудобно, ещё и здравому смыслу противоречит.