Вывод полей в ноде Drupal 8 как html

Главные вкладки

Аватар пользователя GodZiLA GodZiLA 19 сентября 2016 в 15:37

Доброго дня!
Уже не знаю даже где и правду искать, и гуглил, и яндексил - решения всё нет.
Суть вот в чём - использую множественные field collections для создания ноды, очень удобно, когда блоки одинаковые и нужно только менять их количество/содержание. Создал твиг файл для типа материала, вывожу в цикле по 1 записи, обрабатываю - всё ок. Но проблема в том, что сохраняются html-теги (), как их преобразовать в, собственно, html - ума не приложу. Пробовал и |raw, и |render, и через доп модуль |field_value - всё без толку.
Кто-нибудь сталкивался?

Комментарии

Аватар пользователя GodZiLA GodZiLA 19 сентября 2016 в 16:36

Есть шаблон типа материала.
В нём надо вывести поле так, чтобы не отображались html-теги, сейчас стоит в настройках filtered html, выводятся теги . Хочется, чтобы они обрабатывались и выводились нормально, как и должны.

Аватар пользователя GodZiLA GodZiLA 19 сентября 2016 в 16:49

Мне надо темизировать тип материала. Для этого создал файл node--articles.html.twig.
В нём вывожу нужные мне поля, но они выводятся текстом, например "Lores ipsum...", а мне надо, чтобы тег обработался и стал абзацем, как и должен

Аватар пользователя GodZiLA GodZiLA 19 сентября 2016 в 17:08

На дефолтной (бартик) всё хорошо, но как выведено там я и сам могу вывести, мне надо по-другому.

<?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 %}
?>
Аватар пользователя GodZiLA GodZiLA 20 сентября 2016 в 17:27

Всё равно выводит текстом (пробовал там и render, и value). Как заставить его рендерить теги? Или это в принципе невозможно?

Аватар пользователя GodZiLA GodZiLA 20 сентября 2016 в 17:41

Постараюсь сейчас подробно рассказать.
В дефолтном шаблоне вывод ноды делается так: {{ content }} - и всё. Там сразу рендеренный вывод идёт.
Я же хочу сделать так - у меня есть коллекция полей, несколько таких коллекций. Я хочу пройтись по этому массиву в шаблоне node--articles.html.twig через foreach (ну, типа через foreach) и вывести в нужных местах нужные блоки.
Вот.

Аватар пользователя tlito tlito 20 сентября 2016 в 19:31

вам надо использовать другой шаблон
для управления показом полей или коллекции полей не нужно править node--type.html.twig
в этой статье - наводка на правильные имена файлов http://tlito.ru/node/285/
"Именование файлов шаблонов в Drupal 8"

Аватар пользователя GodZiLA GodZiLA 26 октября 2016 в 16:31

Сделал как вы сказали, создал отдельный файл, в котором и настроил вывод, но получается какая-то жесть.
Внутри цикла нужно сделать так:

<?php
{% set block_1 %}
    {{ 
field.content['#field_collection_item'].field_text_block_1.value raw }}
{% 
endset %}
?>

и только тогда получится вывести Full HTML без тегов, а в преобразованном виде.
Неужели в Drupal 8 нет более простого способа это сделать? Это же, мало того, что неудобно, ещё и здравому смыслу противоречит.