UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: ariusgroup от 09 Октября 2012, 15:35:47

Название: Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: ariusgroup от 09 Октября 2012, 15:35:47
Здравствуйте. Такой вопрос.
Шаблон на xslt.
Если есть простая страница сайта, там вставлен текст и в разных местах надо вывести несколько форм.
в tpl верстке просто в вставляется вызов макроса
как вызывать формы в xslt?
===========================


Проектным спонсорам

текст 1
%webforms add('128', '672', 'webforms_contact_2_1')%

Инфопартнерство

текст3
%webforms add('128', '672', 'webforms_contact_2_2')%

Преподавателям

текст3
%webforms add('129', '674', 'webforms_contact_2_3')%
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: BaceH от 12 Октября 2012, 04:42:12
точно также вставляете в поле контент, только форма будет выводиться не xslt а tpl
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: admin от 16 Октября 2012, 12:16:39
чтобы не мешать tpl и xslt  я обычно делаю так:

1. создаем в файле (если у вас старый вармант хранения файлов шаблона)  /xsltTpls/modules/content.xsl новый templates

<xsl:template match="result[@module = 'content' and @pageId='99']">
<div umi:element-id="{$document-page-id}" umi:field-name="content" umi:empty="&empty-page-content;">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes" />
</div>
<xsl:apply-templates select="document('udata://webforms/add/128/672')/udata" mode="webforms_contact_2_1"/>
<xsl:apply-templates select="document('udata://webforms/add/128/672')/udata" mode="webforms_contact_2_2"/>
<xsl:apply-templates select="document('udata://webforms/add/129/672')/udata" mode="webforms_contact_2_3"/>

</xsl:template>

обратите внимание что шаблон привязан к странице с id = 99 (пусть наша страница будет с таким id)

2. ну и не забываем создать шаблоны для вывода форм с mode="webforms_contact_2_1" , mode="webforms_contact_2_2" и mode="webforms_contact_2_3"
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: ariusgroup от 17 Октября 2012, 14:33:14
Спасибо. Разобрался при верстке формы возникла другая проблема.

Необходимо вставить в шаблон формы след. код

<div class="button" style="width: 14.2em; margin-left: -7.6em;">
         <a href="#" onclick="if ( document.getElementById('form-1').style.height == '1px' ) { document.getElementById('form-1').style.height = 'auto'; } else { document.location='/thankyou-message/'; } return false;"><span>Написать</span></a>
      </div>
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: ariusgroup от 17 Октября 2012, 14:35:29
Естественно он выдает ошибки, из-за javascript. Находил поиском решение с CDATA но оно подходит для блоков js кода типа
<script type="text/javascript">
   <![CDATA[
    try {
    var pageTracker = _gat._getTracker("ID-00000000-0");
    pageTracker._trackPageview();
    } catch(err) {}
   ]]>
 </script>
а как быть в данном случае не могу откапать.

Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: admin от 17 Октября 2012, 14:40:56
либо выносите js код в отдельное место, либо пользуйтесь xsl:attribute конструкцией... примерно так
<a href="#">
<xsl:attribute name="onclick">
<![CDATA[if ( document.getElementById('form-1').style.height == '1px' ) { document.getElementById('form-1').style.height = 'auto'; } else { document.location='/thankyou-message/'; } return false; ]]>
</xsl:attribute>
<span>Написать</span>
</a>
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: ariusgroup от 17 Октября 2012, 14:47:13
Отлично. Все работает. Спасибо admin огромное!
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: ariusgroup от 17 Октября 2012, 15:19:42
интересуют моменты обработки.

а именно - при отправке возникают ошибки, например
http://kursrik-test.ru.umitest.ru/contacts/?_err=1350472213
как из обрабатывать. вывести могу через обработку get запроса, но как узнать что значит каждый код, или в umi есть свой обработчик?

и второй, для все форм задается одна страницf удачной отправки, а у меня по тз дл для разных форм данные сртранцыс разным текстом, как управлять данным моментом
 <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" />
Название: Re:Работа модуля Обратная связь (вставка форм в контент сайта) при XSLT
Отправлено: admin от 17 Октября 2012, 15:29:17
ошибки выводятся с помощью макроса system listErrorMessages (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/virtualnyj_modul_system/system_listerrormessages/)

по умолчанию текст при успешной отправке указывается в шаблоне письма для данной формы (настраивается в админке) в самом последнем поле типа html (не помню как называется оно) или можно прописать чтобы был редирект на нужную вам страницу, на которой вы напишите нужный вам текст.
Для редиректа нужно изменить параметр  <input type="hidden" name="ref_onsuccess" value="[url_page_with_success_text]" />