UMIhelp
Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: 31rus от 04 Декабря 2015, 17:49:53
-
Возник вопрос вставки формы обратной связи, в TPL это решалось вставкой нужном месте макроса webforms add()
В XSLT не проходит такой вариант, точнее TPL макрос отрабатывает, но не хочется использовать его. Вставка udata://webforms/add/ не даст результата, так же как и <![CDATA[<xsl:apply-templates select="document('udata://webforms/add/')/udata"/>]]>
Как решается данная проблема?
Я могу написать условие проверки страницы по адресу, типу и прочее. могу конечно добавить в админку поле и по нему провести проверку, но это не даст гибкости когда форма должна быть выведена в середине контента страницы(
-
что куда вы вставляете?
-
В контент страницы, в разрыв текста надо вставить форму.
-
а в чем проблема-то использовать стандартный макрос webforms add()???
-
В том что он TPL, зачем плодить зоопарк из шаблонизаторов.
Служба заботы сообщает следующее:
Здравствуйте, Денис.
К сожалению, это невозможно сделать на xslt, потому что xslt-процессор не обрабатывает контент страницы из базы данных, он работает непосредственно на xsl-файлах. Для решения Вашей задачи можно либо использовать tpl-макросы в контенте, либо править xsl-шаблоны в файлах.
-
можно написать кастомный макрос в котором брать xml из udata://webforms/add/, обрабатывать его по шаблону xsl и выдавать на выход готовый html
-
это понятно, просто искал возможность без костылей решить данную задачу
-
Еще один вариант костылей:
- вставляем в html поле какой-то зарезервированный код (например [webform=190])
- через js обрабатываем данный код и формируем форму за счет ajax запроса с параметром ?transform, который позволит нам работать с xslt шаблонами
или
пишем обработчик (событийная модель), который перед выводом сформированного html, на уровне php перехватит его, сделает поиск кода и заменит его на форму, сформированную силами xslt шаблонизатора и только затем отдаст его браузеру