Столкнулся с проблемой вывода вьюса в #markup поля body ноды.
Для обычного вывода ноды вьюс выводится полностью и подхватывает файлы с темизацией, а для вывода в рассылке подхватывается уже отрендеренное значение из Node->body[0['#markup']. И здесь уже вьюс выводится отрендеренным без учета файлов темизации.
Как сделать чтобы в #markup он выводился полностью отрендеренным с учетом файлов темизации?
Views и Node->body #markup
Главные вкладки
Лучший ответ
1
Создайте админскую тему, дочернюю от текущей админской темы. Включите её и установите в качестве админской. Поместите в неё шаблоны и всё. Всё остальное будет браться из родительской темы, то есть будет работать, как и прежде.
Комментарии
Нужны подробности..
Что за рассылка (как реализована).
Что имеется ввиду под выражением "без учета файлов темизации"?
кастомные шаблоны, css, еще что-то?
Есть рассылка(simplenews) материалы для которой отбираются вьюсом. Результат вставляется в поле body ноды рассылки.
Вывод вьюса я переопределяю через шаблон views-view-fields--newsletter-news.tpl.php где задана моя разметка.
Дальше сам вьюс рендерю в поле body ноды рассылки через токен(Insert View) либо напрямую используя views_embeded_view(результат аналогичный).
Если выводим саму ноду все нормально отображается. А вот когда уже отправляем письмо то получаем отображение без учета файла темизации вьюса. И такой же вывод точно получаем если посмотреть rendered array ноды в Devel для поля
body[0]['#markup'].
В БД,
в таблице field_data_body ,
столбец body_value,
записи - соответствующей ноде-рассылке (entity_type, bundle, entity_id)
html-разметка, сформированная вьюсом - "правильная"?
в этом поле просто строчка с кодом для вывода вьюса,
<?php print views_embed_view('newsletter_news', 'block_1'); ?>
Хм.. как все запутано.. PHP-код в текстовых полях..
Simplenews вроде из коробки поддерживает подписки на вьюс-выборки: https://www.drupal.org/node/2663886
если имя вьюса ('newsletter_news') и имя дисплея ('block_1') указано правильно, то должен правильный вьюс вставляться:
views_embed_view('newsletter_news', 'block_1')
Или у Вас в рассылку что-то другое отправляется, а не данная нода-)
То что Вы показали по ссылке - это для фильтрации подписчиков, в рассылку же уходит только поле body( пытался темизировать к примеру и шаблон ноды и опять же рассылку уходило только значение поля body ноды).
Значения отобранные вьюсом в рассылке присутствуют, только без учета файла темизации, если смотреть же саму ноду рассылки то тут файл темизации подхватывается.
Походу проблема в рендеринге вьюсов.
Вы шаблоны кладёте в свою тему. А рассылку запускаете из админки, поэтому тема там не применяется.
Кстати да..
Сразу не сообразил, а это почти единственный вариант, почему шаблоны вьюса "не работают".
Но все равно, для рассылки "генерировать" специальную ноду это какое-то "извращение".
Должен быть способ проще отправлять список новых материалов , и он как-то связан с views-)
Orion76,
полносью согласен что должно быть проще но Симплньюс(уже был установлен до меня и есть определенная база подписчиков) так сделана, что если ты раз отправил рассылку то она больше не отправляется. А стоит задача отправлять регулярно и меть возможность править статичный текст в рассылке, для это есть модуль симплньюс_шедулер, который создает копии рассылки и отправляет их. В общем задача вроде бы и простая но вот с подобной проблемой по темизации столкнулся впервые.
в общем перечитав кучу коментов на орге, ларчик открывается простым копированием в админскую тему шаблона вьюса, но это не красиво. Как сделать правильно?
Создайте админскую тему, дочернюю от текущей админской темы. Включите её и установите в качестве админской. Поместите в неё шаблоны и всё. Всё остальное будет браться из родительской темы, то есть будет работать, как и прежде.
Спасибо!