Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Обратная связь - как редактировать вывод формы?

Автор poloРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 3963
Последний ответ 10 Августа 2011, 18:26:47
от admin
Подключение произвольной формы на произвольном разделе

Автор NOIRMANРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 2346
Последний ответ 27 Ноября 2011, 10:23:16
от admin
Передача значений из одной формы в другую

Автор ivan23Раздел Шаблоны TPL

Ответов: 5
Просмотров: 4128
Последний ответ 10 Января 2013, 09:49:34
от admin
Определить id формы на posted странице

Автор DZHETIGAPAРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 1539
Последний ответ 08 Декабря 2011, 21:52:01
от DZHETIGAPA
Автоматическая регистрация при отправке формы?

Автор muldyРаздел Custom макросы

Ответов: 1
Просмотров: 1082
Последний ответ 03 Сентября 2013, 19:33:59
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

sergeron

  • **
  • 59
  • +2/-0
    • Просмотр профиля
Верстка формы обратной связи
« : 25 Января 2013, 18:49:50 »
В купленном шаблоне есть такая форма
<form action="#" id="contactForm" method="post">
    <div class="fieldset">
              <h2 class="legend">Контактная информация</h2>
              <ul class="form-list">
                  <li class="fields">
                      <div class="field">
                          <label for="name" class="required"><em>*</em>Имя</label>
                          <div class="input-box">
                              <input name="name" id="name" title="Name" value="" class="input-text required-entry" type="text" />
                          </div>
                      </div>
                      <div class="field">
                          <label for="email" class="required"><em>*</em>Email</label>
                          <div class="input-box">
                              <input name="email" id="email" title="Email" value="" class="input-text required-entry validate-email" type="text" />
                          </div>
                      </div>
<div class="field last">
<label for="telephone">Телефон</label>
<div class="input-box">
<input name="telephone" id="telephone" title="Telephone" value="" class="input-text" type="text" />
</div>
</div>
                  </li>
                  <li class="wide">
                      <label for="comment" class="required"><em>*</em>Комментарии</label>
                      <div class="input-box">
                          <textarea name="comment" id="comment" title="Comment" class="required-entry input-text" cols="5" rows="3"></textarea>
                      </div>
                  </li>
              </ul>
          </div>
          <div class="buttons-set">
              <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" />
              <button type="submit" title="Submit" class="button"><span><span>Отправить</span></span></button><p class="required">* Обязательные поля</p>
          </div>
      </form>
как ее прикрутить к add.xsl, в форме  каждому инпуту дан свой стиль. Как-то не очень понятно, кто есть кто в этом add.
Вот это место
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
конечно понятно можно сделать, заменив его на
<div class="buttons-set">
              <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" />
              <button type="submit" title="Submit" class="button"><span><span>Отправить</span></span></button><p class="required">* Обязательные поля</p>
          </div>
а с остальным непонятки вообще.


*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #1 : 25 Января 2013, 19:34:35 »
самый простой вариант, это вставить данную форму как есть оставив все скрытые системные input из оригинального шаблона типа input с name="ref_onsucces" , а во все input, сверстанным в верстке, вставить системные name (типа data[new][vawe_imya]). Их можно посмотреть выведя форму, созданную в админке, по дефолтному шаблону...

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

*

sergeron

  • **
  • 59
  • +2/-0
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #2 : 26 Января 2013, 22:55:37 »
значится так
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data" id="contactForm">
    <div class="fieldset">
              <h2 class="legend">Контактная информация</h2>
              <ul class="form-list">
                  <li class="fields">
                      <div class="field">
                          <label for="name" class="required"><em>*</em>Имя</label>
                          <div class="input-box">                              
                                  <input name="data[new][imya]" id="name" title="Name" value="" class="input-text required-entry" type="text" />
                          </div>
                      </div>
                      <div class="field">
                          <label for="email" class="required"><em>*</em>Email</label>
                          <div class="input-box">                              
                                  <input name="data[new][email]" id="email" title="Email" value="" class="input-text required-entry validate-email" type="text" />
                          </div>
                      </div>
<div class="field last">
<label for="telephone">Телефон</label>
<div class="input-box">
<input name="data[new][telefon]" id="telephone" title="Telephone" value="" class="input-text" type="text" />
</div>
</div>
                  </li>
                  <li class="wide">
                      <label for="comment" class="required"><em>*</em>Комментарии</label>
                      <div class="input-box">
                          <textarea name="data[new][kommentarii]" id="comment" title="Comment" class="required-entry input-text" cols="5" rows="3"></textarea>
                      </div>
                  </li>
              </ul>
          </div>
            <input type="hidden" name="system_email_to" value="{@id}" />
        <input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
            <div class="buttons-set">
              <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" />
              <button type="submit" title="Submit" class="button"><span><span>Отправить</span></span></button><p class="required">* Обязательные поля</p>
          </div>
      </form>
пишет, что неизвестен адресат. Видимо этого
<input type="hidden" name="system_email_to" value="{@id}" />
я добавил, но не хватает чего-то

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #3 : 27 Января 2013, 18:27:39 »
id адресата не через @id указывается, сделайте <xsl:copy-of select="." />, чтобы посмотреть какой path надо указать чтобы вывести id адресата

*

sergeron

  • **
  • 59
  • +2/-0
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #4 : 27 Января 2013, 22:37:33 »
выводит вот это:
<udata generation-time="0.021321" method="add" module="webforms" template="webforms" form_id="141" xmlns="" xmlns:xlink="http://www.w3.org/TR/xlink">
<items>
<item id="5505" selected="">Администратор</item>
</items>
<groups>
<group title="Контакты" name="kontakty">
<field id="434" required="required" type="string" input_name="data[new][imya]" field_id="434" title="Имя" name="imya"></field>
<field id="435" required="required" type="string" input_name="data[new][email]" field_id="435" title="Email" name="email"></field>
<field id="436" required="required" type="string" input_name="data[new][telefon]" field_id="436" title="Телефон" name="telefon"></field>
<field id="437" required="required" type="text" input_name="data[new][kommentarii]" field_id="437" title="Комментарии" name="kommentarii"></field>
</group>
</groups>
</udata>
Администратор, - это так получатель называется у меня. И как это вставить? через udata
« Последнее редактирование: 27 Января 2013, 22:39:18 от sergeron »

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #5 : 27 Января 2013, 23:04:29 »
ну... путь до id этого email такой items/item/@id, вот его и вставляйте
<input type="hidden" name="system_email_to" value="{items/item/@id}" />

*

sergeron

  • **
  • 59
  • +2/-0
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #6 : 28 Января 2013, 10:58:36 »
увы, пишет по прежнему, что адрес получателя неизвестен :(   Может это как-то связано с тем, что это второй домен и используется новая система хранения шаблонов? Да и еще вызов формы осуществляется из любого места, т.е. она висит сверху и страницу отдельную в админке я не создавал
« Последнее редактирование: 28 Января 2013, 11:03:20 от sergeron »

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #7 : 28 Января 2013, 12:29:41 »
1. проверьте что в формируемом html в этом input подставленн id который вы видите в админке при редактировании данного адреса.
2. проверьте что у адреса в админке действительно заполнены все 3 поля и в последнем (в котором должен быть email) действительно есть нужный вам email
3. зайдите в файл /classes/modules/webforms/class.php
найдите там функцию send, найдите в ней
$aAddresses  = getRequest('system_email_to');
и поставьте после него
var_dump($aAddresses); exit('---');
чтобы проверить, что  код принимает из формы этот id.

*

sergeron

  • **
  • 59
  • +2/-0
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #8 : 28 Января 2013, 12:57:55 »
1 - нет, строка в сформированном html выглядит так
input type="hidden" value="" name="system_email_to">
, если делать через обычную форму демодизи, то
<input type="hidden" value="5505" name="system_email_to">

2 - да в админке написано Администратор, Администратор и почта вставлена

3 - выдает string(0) "" --- , это и по первому пункту видно

кстати
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
тоже пусто.
« Последнее редактирование: 28 Января 2013, 15:40:21 от sergeron »

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
Re:Верстка формы обратной связи
« Ответ #9 : 28 Января 2013, 19:42:35 »
если ситема возвращает такой xml
<udata generation-time="0.021321" method="add" module="webforms" template="webforms" form_id="141" xmlns="" xmlns:xlink="http://www.w3.org/TR/xlink">
<items>
<item id="5505" selected="">Администратор</item>
</items>
<groups>
<group title="Контакты" name="kontakty">
<field id="434" required="required" type="string" input_name="data[new][imya]" field_id="434" title="Имя" name="imya"></field>
<field id="435" required="required" type="string" input_name="data[new][email]" field_id="435" title="Email" name="email"></field>
<field id="436" required="required" type="string" input_name="data[new][telefon]" field_id="436" title="Телефон" name="telefon"></field>
<field id="437" required="required" type="text" input_name="data[new][kommentarii]" field_id="437" title="Комментарии" name="kommentarii"></field>
</group>
</groups>
</udata>


и ты работаешь в ашблоне с match="udata[...]", то <input type="hidden" name="system_email_to" value="{items/item/@id}" /> должен что-то выдавать

Если не пашет, то проверяй все по кусочкам, в начале попробуй заполучить хоть какое-то значение из данного xml, потом методом проб и ошибок и выводом результатов твоих проб через copy-of нащупаешь как вывести значение нужное тебе...

P.S. Какая-то странная проблема, id в xml есть, весь вопрос вывести его в нужный input...