UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Prus от 31 Января 2012, 16:08:29

Название: Добавление в форму заказа название товара
Отправлено: Prus от 31 Января 2012, 16:08:29
Задача:
Клиент выбрал товар и нажал заказать. Появляется форма отправки товара, где кроме стандартных полей (ФИО, телефон, email) должно еще передаваться данные о название товара который он выбрал. Чтобы менеджер сразу видел.

Буду рад советам.

Переделываю шаблон Современный.
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 01 Февраля 2012, 17:41:53
Цитировать
где кроме стандартных полей (ФИО, телефон, email) должно еще передаваться данные о название товара который он выбрал. Чтобы менеджер сразу видел.

Возможно, я чего-то не понял в вопросе, но, вообще, не должно такого произойти. Вы можете сами настроить шаблон формы, чтобы в какое-то поле подставлялось ваше значение (в частности название товара)
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 01 Февраля 2012, 19:07:38
То есть сделать отдельный шаблон формы для заказа товара и туда поместить эту функцию. Оке.

Если есть ссылка на пример или что-то буду рад. Я же только изучаю xslt и пока логика мне сложна.

Мне кажется это вполне типовая проблема для маленьких магазинов.
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 01 Февраля 2012, 19:25:59
Цитировать
Клиент выбрал товар и нажал заказать. Появляется форма отправки товара, где кроме стандартных полей (ФИО, телефон, email) должно еще передаваться данные о название товара

форма появляется на этой же странице (средствами js) или пользователя перекидывает на новую страницу?
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 01 Февраля 2012, 20:33:30
 на той же странице, да, посредством js 

то есть при нажатие на ссылку заказать выплывает окно с формой
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 01 Февраля 2012, 20:40:19
ну и для полной ясности напиши сюда код, которым ты выводишь товар и форму рядом с ним
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 14 Февраля 2012, 11:34:35
Столкнулся с проблемой. Нужно вывести в форме выбор даты (мм.дд.гг) не понимаю, как это делается.
Пишу тип date выводиться пустая строка. Не могу найти справку по этому. Прошу помочь.

Было бы отлично, если еще можно вывести календарь с выбором даты.
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 14 Февраля 2012, 12:41:14
к сожалению поле типа date выводиться просто как <input type="text">, то есть все варианты красоты (в том числе выплывающий календарик на js) нужно писать самому в шаблоне с этим полем.

Могу посоветовать посмотреть в сторону jQuery плагина datepicker
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 14 Февраля 2012, 13:04:43
то есть если я хочу создать три выпадающих списка с выбором месяца года и числа нужно создать новую группу в форме с отдельных полем со своим справочником и вывести?

спасибо за скрипт посмотрю)
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 14 Февраля 2012, 13:37:56
нет, я так понял,  поле типа дата у вас уже есть. Нужно всего лишь отредактировать шаблон по которому выводиться само поле и добавить туда js скрипт который и будет выводить календарь или т.п.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 14 Февраля 2012, 13:47:02
скрипт datepicker"а.
					<script>
$(function() {
var dates = $( "#from, #to" ).datepicker({
defaultDate: "w",
changeMonth: true,
numberOfMonths: 2,
onSelect: function( selectedDate ) {
var option = this.id == "from" ? "minDate" : "maxDate",
instance = $( this ).data( "datepicker" ),
date = $.datepicker.parseDate(
instance.settings.dateFormat ||
$.datepicker._defaults.dateFormat,
selectedDate, instance.settings );
dates.not( this ).datepicker( "option", option, date );
}
});
});
</script>
код в шаблоне

<div class="form_element">
   <label class="required">
      <span><xsl:text>Дата начала:</xsl:text></span>
      <input type="text" id="from" name="data_nachala" value="" class="textinputs" />
   </label>
</div>
<div class="form_element">
   <label class="required">
      <span><xsl:text>Дата окончания:</xsl:text></span>
      <input type="text" id="to" name="data_okonchaniya" value="" class="textinputs" />
   </label>
</div>

В стандартной форме вам нужно только прописать id в  форме вывод даты.

ЗЫ http://jqueryui.com/demos/datepicker/ (http://jqueryui.com/demos/datepicker/) я использовал метод date-range
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 14 Февраля 2012, 14:55:42
спасибо) это я понял) я имел слегка другое) но сделаю так)
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 16 Февраля 2012, 02:32:24
Спасибо есть большая и последня проблема вроде с формой.

Мне нужно вывести в форме заголовок название страницы (товар) и передать его в письмо на почту. Не понимаю как это сдедать.
Если писать запрос внутри формы то он вообще не выводить его.
Поэтому еще проблема как его передать. Буду очень благодарен за помощь. Сейчас сяду еще разбираться конечно.
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 16 Февраля 2012, 18:27:44
так и не понял(( очень жду помощи)
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 16 Февраля 2012, 19:50:54
если быть кратким как и ваш вопрос, тогда:

считываем заголовок в переменную
<xsl:variable name="h1" select="//property[@name = 'h1']/value" />

выводим переменную в форме
<input type="hidden" name="nt" value="{$h1}" />
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 16 Февраля 2012, 21:30:11
ничего не выводит((

код формы


<xsl:apply-templates select="document('udata://webforms/add/137')/udata" mode="mywebform"/>


<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="mywebform">

  <form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />

    <!-- этот парамет указывает куда совершать редирект -->
    <!-- в случае успешной отправки сообщения -->
    <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" />
    <table>
      <tr>
        <td>
<xsl:variable name="h1" select="//property[@name = 'h1']/value" />
<input name="nt" value="{$h1}" />
</td>
        <td><div style="display:none;">/
           <select name="system_email_to" >
             <xsl:apply-templates select=".//item" mode="form-select"/>
           </select>
</div>
        </td>
      </tr>
   
      <!-- здесь отображаем набор полей формы -->
      <xsl:apply-templates select=".//field" mode="form-fields"/>

      <!-- защитный код -->
      <xsl:apply-templates select="document('udata://system/captcha')/udata[url]" />
 
   </table>

   <p><input type="submit" value="Отправить" /></p>

  </form>

</xsl:template>
<xsl:template match="item" mode="form-select">
  <option value="{@id}">
    <xsl:value-of select="." />
  </option>
</xsl:template>

<xsl:template match="field[@type = 'string']" mode="form-fields">
  <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><input type="text" name="{@input_name}"/></td>
  </tr>
</xsl:template>

<xsl:template match="field[@type = 'text']" mode="form-fields">
  <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><textarea name="{@input_name}"/></td>
  </tr>
</xsl:template>

<xsl:template match="field[@type = 'date']" mode="form-fields">
  <tr>
   <td><xsl:value-of select="@title"/>:</td>
    <td><input type="text" class="datepicker"  name="{@input_name}"/></td>
   </tr>
</xsl:template>

<xsl:template match="field[@type = 'relation']" mode="form-fields">
  <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><select name="{@input_name}">
             <xsl:apply-templates select=".//item" mode="form-select"/>
           </select></td>
  </tr>
</xsl:template>

 <xsl:template match="udata[@method='captcha']">
   <tr>
      <td><label for="{@input_id}">Защитный код:</label></td>
      <td><img src="{url}{@random_string}"/>
      <input type="text" name="captcha"/></td>
   </tr>
</xsl:template>

xml страницы
http://beinisrael.com/apartamenty1/telaviv/dereh_yaffo_28.xml
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 16 Февраля 2012, 22:23:55
<table>
      <tr>
        <td>
<h1><xsl:value-of select="//property[@name = 'h1']/value" /></h1>
</td>
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 02:11:01
я так пробовал сразу не выводит.

Проблема в том, что я ставлю запрос внутри шаблона формы. То есть он ищет в xml формы как я понимаю.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 17 Февраля 2012, 05:58:41
<table>
      <tr>
        <td>
<h1><xsl:value-of select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" /></h1>
</td>

$document-page-id задается в исходном шаблоне как глобальная переменная
<xsl:variable name="document-page-id" select="/result/@pageId" />

зы при выборе даты используйте метод date-range в datepicker-е, сейчас дату Выезда можно выбрать меньше даты Въезда , date-range это отслеживает и не допускает введение второй даты меньше первой.
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 15:15:17
класс! спасибо.

А как его теперь передать?
Если создать свой инпут, то он его не передает. А если создать в модуле формы, то его не скрыть и не понятно как туда передать значение, потому что он выводить все типы полей автоматом.

И как его вывести в шаблоне письма.

За совет с датой спасибо большое.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 17 Февраля 2012, 15:51:46
считываем заголовок в переменную
<xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />

выводим заголовок в форме
<table>
      <tr>
        <td>
<h1><xsl:value-of select="$h1" /></h1>
</td>

передаем заголовок в скрытом поле в форме
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="mywebform">

  <form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />
    <input type="hidden" name="nt" value="{$h1}" />

дальше обрабатываете как обычные данные обращаясь по имени nt
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 16:53:17
все работает, кроме строчки

 <input type="hidden" name="nt" value="{$h1}" />

страница перестает грузиться.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 17 Февраля 2012, 17:41:25
скиньте еще раз содержимое  шаблона <xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="mywebform">
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 17:43:37
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="mywebform">
   <form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />
 
    <!-- этот парамет указывает куда совершать редирект -->
    <!-- в случае успешной отправки сообщения -->
    <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" />
    <table>
      <tr>
        <td>
<xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
 <h1><xsl:value-of select="$h1" /></h1>

</td>
        <td><div style="display:none;">/
           <select name="system_email_to" >
             <xsl:apply-templates select=".//item" mode="form-select"/>
           </select>
</div>
        </td>
      </tr>
   
      <!-- здесь отображаем набор полей формы -->
      <xsl:apply-templates select=".//field" mode="form-fields"/>

      <!-- защитный код -->
      <xsl:apply-templates select="document('udata://system/captcha')/udata[url]" />
 
   </table>

   <p><input type="submit" value="Отправить" /></p>

  </form>

</xsl:template>
<xsl:template match="item" mode="form-select">
  <option value="{@id}">
    <xsl:value-of select="." />
  </option>
</xsl:template>

<xsl:template match="field[@type = 'string']" mode="form-fields">
 <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><input type="text" name="{@input_name}"/></td>
  </tr>
</xsl:template>

<xsl:template match="field[@type = 'text']" mode="form-fields">
  <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><textarea name="{@input_name}"/></td>
  </tr>
</xsl:template>

<xsl:template match="field[@type = 'date']" mode="form-fields">
  <tr>
   <td><xsl:value-of select="@title"/>:</td>
    <td><input type="text" class="datepicker"  name="{@input_name}"/></td>
   </tr>
</xsl:template>

<xsl:template match="field[@type = 'relation']" mode="form-fields">
  <tr>
    <td><xsl:value-of select="@title"/>:</td>
    <td><select name="{@input_name}">
             <xsl:apply-templates select=".//item" mode="form-select"/>
           </select></td>
  </tr>
</xsl:template>

 <xsl:template match="udata[@method='captcha']">
   <tr>
      <td><label for="{@input_id}">Защитный код:</label></td>
      <td><img src="{url}{@random_string}"/>
      <input type="text" name="captcha"/></td>
   </tr>
</xsl:template>
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 17 Февраля 2012, 17:48:07
а куда вы вставляете скрытое поле для передачи h1 ?
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 17:54:35
сюда

  <form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />
 
 
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 17 Февраля 2012, 17:54:53
и до этого вставлял <xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 18 Февраля 2012, 14:22:39
я сделал. инпут появился с названием товора, но как его передать. отправляю письмо и пишу в шаблон название инпута, но ничего не вставляется.


  <form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />
<xsl:variable name="roomname" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
  <input type="hidden" name="rooms" value="{$roomname}" />
 
    <!-- этот парамет указывает куда совершать редирект -->
    <!-- в случае успешной отправки сообщения -->
    <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" />
    <table>
      <tr>
        <td>
<xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
 <h1><xsl:value-of select="$h1" /></h1>
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 18 Февраля 2012, 18:38:00
Спасибо) Я допер и сделал))

Без вас бы не получилось.

Последни
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 18 Февраля 2012, 18:39:10
Спасибо) Я допер и сделал))

Без вас бы не получилось.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 18 Февраля 2012, 18:39:55
и что было предпринято?
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 19 Февраля 2012, 11:42:33
<form method="post" action="/webforms/send/">

    <!-- необходимо передать идентификатор формы -->
    <input type="hidden" name="system_form_id" value="{@form_id}" />
<xsl:variable name="roomname" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
  <input type="hidden" name="data[new][cityroom]" value="{$roomname}" />
 
    <!-- этот парамет указывает куда совершать редирект -->
    <!-- в случае успешной отправки сообщения -->
    <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" />
    <table сlass="form_order">
      <tr>
        <td colspan="2">
<xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
 <div class="h1room">Запрос на аренду апартаментов <xsl:value-of select="$h1" /></div>


после чего в шаблоне данных в форме создал не видимое поле с таким же названием и все.
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 19 Февраля 2012, 13:33:18
<xsl:variable name="roomname" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
....
<xsl:variable name="h1" select="document(concat('upage://', $document-page-id))//property[@name = 'h1']/value" />
 <div class="h1room">Запрос на аренду апартаментов <xsl:value-of select="$h1" /></div>

если это в одном шаблоне тогда <xsl:value-of select="$h1" /> можно заменить на <xsl:value-of select="$roomname" /> и убрать <xsl:variable name="h1"...
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 21 Февраля 2012, 14:34:29
да уже сделал)

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

пример фото
http://beinisrael.com/upage/354

пытаюсь сделать так:
<xsl:variable name="test1" select="document('upage://@id.photo')/udata/property/value" />   
 <a href="что тут писать?" umi:element-id="{@id}" umi:field-name="photo"  class="fancybox" rel="gallery1">
            <xsl:call-template name="catalog-thumbnail">
               <xsl:with-param name="element-id" select="@id" />
               <xsl:with-param name="field-name">photo</xsl:with-param>
               <xsl:with-param name="empty">&empty-photo;</xsl:with-param>
               <xsl:with-param name="width">500</xsl:with-param>
               <xsl:with-param name="height">312</xsl:with-param>
            </xsl:call-template>
         </a>
      </xsl:template>

если писать {$src} и вообще все что угодно после $ то шаблон перестает работать.
Название: Re:Добавление в форму заказа название товара
Отправлено: admin от 21 Февраля 2012, 21:12:20
gen mr картинке ты определяешь переменной
<xsl:variable name="test1" select="document('upage://@id.photo')/udata/property/value" />   

вот её и используй, с того примера с которого ты этот кусок брал ты же поменял name="src", на name="test1" вот и ниже меняй $src на $test1
Название: Re:Добавление в форму заказа название товара
Отправлено: BaceH от 22 Февраля 2012, 01:25:01
<xsl:variable name="test1" select="document('upage://@id.photo')/udata/property/value" />  
поправить
<xsl:variable name="test1" select="document('upage://',@id,'.photo')/udata/property/value" />  

чейта вы вопросы влудите !?!?!?!
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 22 Февраля 2012, 03:17:52
один и тот же вопрос мне кажется по теме. И людям проще искать, глоссария я просто не увидел.
Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 22 Февраля 2012, 03:23:09
не зря, я сделал два вопроса, из них составил правильный один ответ)

у меня изначально была ошибка. Вместо <xsl:variable name="test1" select="document('upage://@id.photo')/udata/property/value" />   

нужно писать
<xsl:variable name="test1" select="document(concat('upage://',@id,'.photo'))/udata//value" />   


Название: Re:Добавление в форму заказа название товара
Отправлено: Prus от 22 Февраля 2012, 03:26:41
И так если кому нужно готовое решение для создание слайдшоу на юми. Скрипт думаю можно выбрать любой и просто изменить значения какие нужно.
Посмотреть как работает у меня можно тут: http://beinisrael.com/apartamenty1/jerusalem/alkalaj/
слайдшоу и fancybox

Фотоальбом вставляется в товар, посредством ссылки на дерево
Вызываем фотоальбом в шаблоне
 <xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'dopolnitelnye_fotografii']/value/page/@id,'/void/1000'))/udata" mode="tovar_photo_list"/>




Шаблон фотоальбома и превью:

   <xsl:template match="udata[@module = 'photoalbum'][@method = 'album']" mode="tovar_photo_list"/>

   <xsl:template match="udata[@module = 'photoalbum'][@method = 'album'][total]" mode="tovar_photo_list">
         
      <div id="products_example">
         <div id="products">
            <div class="slides_container">
<xsl:apply-templates select="items/item" mode="tovar_photo_list" />
<xsl:apply-templates select="total" />
                                </div>
         <ul class="pagination">
             <xsl:apply-templates select="items/item" mode="tovar_photo_list_thumbs" />
                <xsl:apply-templates select="total" />
</ul>
         </div>
      </div>
   </xsl:template>

<xsl:template match="item" mode="tovar_photo_list">

<xsl:variable name="test1" select="document(concat('upage://',@id,'.photo'))/udata//value" />   
 <a href="{$test1}" umi:element-id="{@id}" umi:field-name="photo"  class="fancybox" rel="gallery1">
            <xsl:call-template name="catalog-thumbnail">
               <xsl:with-param name="element-id" select="@id" />
               <xsl:with-param name="field-name">photo</xsl:with-param>
               <xsl:with-param name="empty">&empty-photo;</xsl:with-param>
               <xsl:with-param name="width">500</xsl:with-param>
               <xsl:with-param name="height">312</xsl:with-param>
            </xsl:call-template>
         </a>
      </xsl:template>

<xsl:template match="item" mode="tovar_photo_list_thumbs">
<li>
<a href="#">         
<xsl:call-template name="catalog-thumbnail">
            <xsl:with-param name="element-id" select="@id" />
            <xsl:with-param name="field-name">photo</xsl:with-param>
            <xsl:with-param name="width">55</xsl:with-param>
                                <xsl:with-param name="height">41</xsl:with-param>
         </xsl:call-template>

</a>
</li>
   </xsl:template>