UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Byte от 06 Мая 2014, 10:02:44

Название: XSLT шаблон писем
Отправлено: Byte от 06 Мая 2014, 10:02:44
Подскажите, пожалуйста, возможно ли написать единый шаблон для писем всех форм обратной связи, скажем с фиксированной темой, может даже отправителем и в теле письма все поля формы, представленные в определенном формате.

Думаю что нужно смотреть в направлении /templates/{мой_шаблон}/xslt/mail

Но вроде бы этот шаблон обрабатывает уже сформированное письмо.
Название: Re:XSLT шаблон писем
Отправлено: Byte от 06 Мая 2014, 10:47:03
Пока нашел решение только в изменении системного метода formatMessage(), но при первом обновлении он затрется, так что не лучший способ, может можно написать кастомный макрос, который выполнялся бы вместо этого?
Название: Re:XSLT шаблон писем
Отправлено: e.ioffe от 06 Мая 2014, 12:38:46
Как вариант, переопределить formatMessage в templates/имя шаблона/classes/modules/webforms/class.php (подробнее о новом формате расширения стандартного функционала см. здесь - http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/razrabotka_sobstvennyh_makrosov_i_modulej/novyj_format_rasshireniya_funkcionala/
Название: Re:XSLT шаблон писем
Отправлено: ilyar от 06 Мая 2014, 12:41:23
formatMessage используется для преформатирования сообщения например Использование bb-кодов на форуме (http://wiki.umisoft.ru/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_bb-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B5).

Для того что бы решить твою задачу надо сделать шаблоны /templates/{мой_шаблон}/xslt/mail в едином стиле, адрес отправителя берется из настроек системы если не указан явно.
Название: Re:XSLT шаблон писем
Отправлено: Byte от 06 Мая 2014, 14:40:09
Как вариант, переопределить formatMessage
В принципе это и имел ввиду во втором сообщении, обязательно попробую. Но это не самое лаконичное решение, Хотелось бы разобраться с шаблонами templates/{мой_шаблон}/xslt/mail но нигде не могу найти документацию. Собственно не понимаю какой xml приходит на вход, поэтому никак не выходит его обработать.
Название: Re:XSLT шаблон писем
Отправлено: e.ioffe от 06 Мая 2014, 15:08:42
Письма создаются по шаблонам, которые определены в админке, а не в шаблонизаторе.
Название: Re:XSLT шаблон писем
Отправлено: ilyar от 06 Мая 2014, 15:12:00
Письма создаются по шаблонам, которые определены в админке, а не в шаблонизаторе.

Это справедливо для Модуля Обратная связь, в остальных случаях это шаблоны и есть практика кастома сделать возможным править их через админку.
 
Как вариант, переопределить formatMessage
В принципе это и имел ввиду во втором сообщении, обязательно попробую. Но это не самое лаконичное решение, Хотелось бы разобраться с шаблонами templates/{мой_шаблон}/xslt/mail но нигде не могу найти документацию. Собственно не понимаю какой xml приходит на вход, поэтому никак не выходит его обработать.

Как такового XML на который можно посмотреть нет, есть данные которые обрабатываются в шаблоне тела письма и разных случаях они разные, например при регистрации пользователя это user_id, domain, activate_link, login, password, lname, fname, father_name. Мне не известно есть ли документация по этому вопросу. В этом поможет разобраться код модуля и следующие материалы:

Добавление информации о заказе в письмо-уведомление (http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B5_%D0%B2_%D0%BF%D0%B8%D1%81%D1%8C%D0%BC%D0%BE-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5)
Разный текст уведомления для разного статуса заказа (http://wiki.umisoft.ru/%D0%A0%D0%B0%D0%B7%D0%BD%D1%8B%D0%B9_%D1%82%D0%B5%D0%BA%D1%81%D1%82_%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0)
Изменяем шаблон оповещения менеджера tpl (http://wiki.umisoft.ru/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D0%BC_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BE%D0%BF%D0%BE%D0%B2%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80%D0%B0_tpl)
Уведомление менеджеру о заказе, со всем необходимыми данными (emarket) XSLT (http://wiki.umisoft.ru/%D0%A3%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80%D1%83_%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B5,_%D1%81%D0%BE_%D0%B2%D1%81%D0%B5%D0%BC_%D0%BD%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_(emarket)_XSLT)

Если кто знает о наличии документации по данным передаваемым в блоки шаблонов почтовых уведомлений разных модулей, пишите, мне тоже будет интересно.
Название: Re:XSLT шаблон писем
Отправлено: e.ioffe от 06 Мая 2014, 15:16:44
Письма создаются по шаблонам, которые определены в админке, а не в шаблонизаторе.

Это справедливо для Модуля Обратная связь, в остальных случаях это шаблоны и есть практика кастома сделать возможным править их через админку.

В первом сообщении было сказано только про "Обратную связь":

Цитировать
Подскажите, пожалуйста, возможно ли написать единый шаблон для писем всех форм обратной связи, скажем с фиксированной темой, может даже отправителем и в теле письма все поля формы, представленные в определенном формате.
Название: Re:XSLT шаблон писем
Отправлено: ilyar от 06 Мая 2014, 16:16:57
Письма создаются по шаблонам, которые определены в админке, а не в шаблонизаторе.

Это справедливо для Модуля Обратная связь, в остальных случаях это шаблоны и есть практика кастома сделать возможным править их через админку.

В первом сообщении было сказано только про "Обратную связь":

Цитировать
Подскажите, пожалуйста, возможно ли написать единый шаблон для писем всех форм обратной связи, скажем с фиксированной темой, может даже отправителем и в теле письма все поля формы, представленные в определенном формате.

Хм, действительно, наболтал лишнего, простите.
Название: Re:XSLT шаблон писем
Отправлено: Byte от 06 Мая 2014, 16:24:17
Да, важно именно сообщения обратной связи обрабатывать, у меня там несколько десятков форм с различными полями и не очень удобно для каждой формы создавать шаблон письма
Название: Re:XSLT шаблон писем
Отправлено: ilyar от 06 Мая 2014, 17:51:16
Да, важно именно сообщения обратной связи обрабатывать, у меня там несколько десятков форм с различными полями и не очень удобно для каждой формы создавать шаблон письма

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

Как писал e.ioffe (http://umihelp.ru/forum/index.php/topic,1809.msg7731.html#msg7731) написать макрос который будет вставляться в тело шаблона при этом решение не будет касаться полей темы, отправителя и получателя.

Собственно не понимаю какой xml приходит на вход, поэтому никак не выходит его обработать.

Этот макрос будет работать в момент отправки формы поэтому смотри что приходит в параметры запроса getRequest({key}) например param0, param1, param* и data*


Еще в том же направлении: создать обработчик события добавления и редактирования формы и что то делать со всеми полями шаблонов.

Еще можно подойти к этому написав скрипт для создания, обновления шаблонов писем для Форм обратной связи по шаблону (так сказать шаблоны по шаблону  :) ) это было бы полезно добавить в UMI.Console (https://github.com/emomteam/UMI.Console) или просто standalone-скрипт.