Views и Node->body #markup

22 декабря 2018 в 19:43
Аватар пользователя veligursky veligursky 0 13 Решено

Столкнулся с проблемой вывода вьюса в #markup поля body ноды.
Для обычного вывода ноды вьюс выводится полностью и подхватывает файлы с темизацией, а для вывода в рассылке подхватывается уже отрендеренное значение из Node->body[0['#markup']. И здесь уже вьюс выводится отрендеренным без учета файлов темизации.
Как сделать чтобы в #markup он выводился полностью отрендеренным с учетом файлов темизации?

Комментарии

Нужны подробности..

veligursky wrote:

а для вывода в рассылке

Что за рассылка (как реализована).

veligursky wrote:

И здесь уже вьюс выводится отрендеренным без учета файлов темизации.

Что имеется ввиду под выражением "без учета файлов темизации"?
кастомные шаблоны, css, еще что-то?

22 декабря 2018 в 20:02

Есть рассылка(simplenews) материалы для которой отбираются вьюсом. Результат вставляется в поле body ноды рассылки.
Вывод вьюса я переопределяю через шаблон views-view-fields--newsletter-news.tpl.php где задана моя разметка.
Дальше сам вьюс рендерю в поле body ноды рассылки через токен(Insert View) либо напрямую используя views_embeded_view(результат аналогичный).
Если выводим саму ноду все нормально отображается. А вот когда уже отправляем письмо то получаем отображение без учета файла темизации вьюса. И такой же вывод точно получаем если посмотреть rendered array ноды в Devel для поля
body[0]['#markup'].

23 декабря 2018 в 1:00

В БД,
в таблице field_data_body ,
столбец body_value,
записи - соответствующей ноде-рассылке (entity_type, bundle, entity_id)

html-разметка, сформированная вьюсом - "правильная"?

23 декабря 2018 в 7:51

Хм.. как все запутано.. PHP-код в текстовых полях..

Simplenews вроде из коробки поддерживает подписки на вьюс-выборки: https://www.drupal.org/node/2663886

если имя вьюса ('newsletter_news') и имя дисплея ('block_1') указано правильно, то должен правильный вьюс вставляться:
views_embed_view('newsletter_news', 'block_1')

Или у Вас в рассылку что-то другое отправляется, а не данная нода-)

23 декабря 2018 в 13:09

То что Вы показали по ссылке - это для фильтрации подписчиков, в рассылку же уходит только поле body( пытался темизировать к примеру и шаблон ноды и опять же рассылку уходило только значение поля body ноды).
Значения отобранные вьюсом в рассылке присутствуют, только без учета файла темизации, если смотреть же саму ноду рассылки то тут файл темизации подхватывается.

23 декабря 2018 в 15:56

It has been a while since this was posted and not answered so I am trying again. I am running into the same issue. I am using this in a cron function were I save the view content periodically as a file. I have a couple of custom templates to alter the view but my custom templates are being ignored. I noticed that this also happens in the views UI preview pane. Rendering the view to the screen is fine but the file content is based on the base templates.
Can anybody explain this?
https://api.drupal.org/comment/63285#comment-63285

Походу проблема в рендеринге вьюсов.

24 декабря 2018 в 13:43

Кстати да..
Сразу не сообразил, а это почти единственный вариант, почему шаблоны вьюса "не работают".

Но все равно, для рассылки "генерировать" специальную ноду это какое-то "извращение".
Должен быть способ проще отправлять список новых материалов , и он как-то связан с views-)

24 декабря 2018 в 14:39

Orion76,
полносью согласен что должно быть проще но Симплньюс(уже был установлен до меня и есть определенная база подписчиков) так сделана, что если ты раз отправил рассылку то она больше не отправляется. А стоит задача отправлять регулярно и меть возможность править статичный текст в рассылке, для это есть модуль симплньюс_шедулер, который создает копии рассылки и отправляет их. В общем задача вроде бы и простая но вот с подобной проблемой по темизации столкнулся впервые.

24 декабря 2018 в 14:50

в общем перечитав кучу коментов на орге, ларчик открывается простым копированием в админскую тему шаблона вьюса, но это не красиво. Как сделать правильно?

24 декабря 2018 в 15:12

Создайте админскую тему, дочернюю от текущей админской темы. Включите её и установите в качестве админской. Поместите в неё шаблоны и всё. Всё остальное будет браться из родительской темы, то есть будет работать, как и прежде.

24 декабря 2018 в 16:59

gun_dose wrote:
Создайте админскую тему, дочернюю от текущей админской темы. Включите её и установите в качестве админской. Поместите в неё шаблоны и всё. Всё остальное будет браться из родительской темы, то есть будет работать, как и прежде.

Спасибо!

24 декабря 2018 в 17:35