Views и Node->body #markup

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

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

Лучший ответ

Аватар пользователя gun_dose gun_dose 24 декабря 2018 в 16:59
1

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

Комментарии

Аватар пользователя Orion76 Orion76 22 декабря 2018 в 20:02

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

veligursky wrote:

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

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

veligursky wrote:

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

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

Аватар пользователя veligursky veligursky 23 декабря 2018 в 1:00

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

Аватар пользователя Orion76 Orion76 23 декабря 2018 в 7:51

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

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

Аватар пользователя veligursky veligursky 23 декабря 2018 в 12:12

в этом поле просто строчка с кодом для вывода вьюса,
<?php print  views_embed_view('newsletter_news''block_1'); ?>

Аватар пользователя Orion76 Orion76 23 декабря 2018 в 13:09

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

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

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

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

Аватар пользователя veligursky veligursky 23 декабря 2018 в 15:56

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

Аватар пользователя veligursky veligursky 24 декабря 2018 в 13:43

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

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

Аватар пользователя gun_dose gun_dose 24 декабря 2018 в 14:11
2

Вы шаблоны кладёте в свою тему. А рассылку запускаете из админки, поэтому тема там не применяется.

Аватар пользователя Orion76 Orion76 24 декабря 2018 в 14:39

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

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

Аватар пользователя veligursky veligursky 24 декабря 2018 в 14:50

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

Аватар пользователя veligursky veligursky 24 декабря 2018 в 15:12

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

Аватар пользователя gun_dose gun_dose 24 декабря 2018 в 16:59
1

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

Аватар пользователя veligursky veligursky 24 декабря 2018 в 17:35

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

Спасибо!