Как сделать одну форму на formit c разными темами
Здравствуйте.
Делаю лендинг на modx, на одной странице используется куча форм обратной связи, отличий между ними только в одном — каждая отсылает свою тему сообщения. И из-за этого для каждой приходится делать свой обработчик.
А можно ли сделать так, чтобы форма была одна, но тема сообщения подменялась в зависимости от того блока, из которого вызывалась?
Пробую сделать через параметры чанков, но что-то не получается.
Делаю так:
Чанк Классика:
Имя: tarif-name
Значение: Классика
Ресурс «Заявка»
Подскажите, пожалуйста, как сделать так, чтобы не плодить кучу форм из-за необходимости делать каждой форме свою тему?
PS. Буду благодарен, если кто-нибудь подскажет именно решение, а не направление. По направлениям я уже второй день брожу, да без толку :-)
Делаю лендинг на modx, на одной странице используется куча форм обратной связи, отличий между ними только в одном — каждая отсылает свою тему сообщения. И из-за этого для каждой приходится делать свой обработчик.
А можно ли сделать так, чтобы форма была одна, но тема сообщения подменялась в зависимости от того блока, из которого вызывалась?
Пробую сделать через параметры чанков, но что-то не получается.
Делаю так:
Чанк Классика:
<div class="col-33 priceItem">
<div class="priceItem__head priceItem__head-brown2">«Классика»
Видеосъемка в ЗАГС</div>
<div class="priceItem__zakaz priceItem__zakaz-brown2">
<a data-type="iframe" class="button-link" data-src="[[~7]]" href="javascript:;">Заказать</a>
</div>
</div>
Параметры чанка Классика:Имя: tarif-name
Значение: Классика
Ресурс «Заявка»
[[!FormIt?
&emailSubject=`Заявка с сайта [[++site_url]] на заказ [[+tarif-name]]` // Через [[+tarif-name]] я пытаюсь передать название тарифа, т.е. слово "Классика".
]]
<form class="forma" action="[[~[[*id]]]]" method="post">
<!-- Здесь код формы -->
</form>
Ну и чанк с извещением на почту владельца сайта о пришедшей заявке:<p>Тема: "Пришел заказ на тариф [[+tarif-name]] с вашего сайта [[++site_name]]"</p>
В обоих случаях, где есть вывод параметра [[+tarif-name]] — этот параметр приходит в виде строки " [[+tarif-name]]", а не в виде значения.Подскажите, пожалуйста, как сделать так, чтобы не плодить кучу форм из-за необходимости делать каждой форме свою тему?
PS. Буду благодарен, если кто-нибудь подскажет именно решение, а не направление. По направлениям я уже второй день брожу, да без толку :-)
Комментарии: 11
docs.modx.com/extras/revo/formit/formit.hooks/formit.hooks.email
3-я строка в таблице Available Properties
3-я строка в таблице Available Properties
Прочитал.
Прочитал ещё раз тут promo-creative.com/formit.html
Потом перечитал всё это.
Но так и не понял, как это относится к моему вопросу :)
Прочитал ещё раз тут promo-creative.com/formit.html
Потом перечитал всё это.
Но так и не понял, как это относится к моему вопросу :)
Ставите в вызове формита параметр emailUseFieldForSubject = 1 и в форме добавляете поле (хоть скрытое) subject, куда пишете тему письма, тут должен сработать чанк с параметрами, а вызов формита нужен всего 1 в начале страницы.
Если я напрямую в форме напишу тему письма, то мне и придется плодить этих форм огромную гору. Я бы ещё вчера накопировал форм, если бы мне казалось это приемлемым решением.
Но я-то как раз хочу уйти от этого. Сделать так, что бы было:
Форма — одна
subject — разный.
Но я-то как раз хочу уйти от этого. Сделать так, что бы было:
Форма — одна
subject — разный.
Кладете форму в чанк. В параметрах ему передаете тему письма. И на странице вызываете чанк с параметром.
Ну или делаете 1 форму и javascript'ом при нажатии кнопки отправить ставите нужную тему в поле.
Ну или делаете 1 форму и javascript'ом при нажатии кнопки отправить ставите нужную тему в поле.
Без js можно сделать? Одна форма = 7 разных `subject` за счет параметров?
Если можно — через скайп подскажете? 300 руб. на ЯД закину.
Или мало?
Если можно — через скайп подскажете? 300 руб. на ЯД закину.
Или мало?
Делаете чанк form, в котором есть:
<input name="subject" value="[[+subject:default=`Тема письма по-умолчанию`]]" />
Вызываете этот чанк 7 раз:[[$form? &subject=`Тема 1`]]
[[$form? &subject=`Тема 2`]]
...
[[$form? &subject=`Тема 7`]]
А в обработчике ставите emailUseFieldForSubject = 1, emailSubject оставляете при этом пустым
Формы все в попапах. Поэтому я вызываю не чанк, а ресурс, через фанцибокс:
<a data-type="iframe" class="button-link" data-src="[[~7]]" href="javascript:;">Заказать</a>
А в ресурсе уже хранится форма. Я могу положить форму в чанк и сделать его вывод в данном ресурсе. Но только один раз. Если 7 — то и будет семь форм во всплывашке.
Тогда так:
getSubject:
...data-src="[[~7]]?subjectId=1"...
<input name="subject" value="[[!getSubject]]" />
getSubject:
$subjectId=$_GET['subjectId'];
if($subjectId == 1) {
return 'Тема письма 1';
}
Добавьте GET-параметр в кнопку:
А в самой форме ловите и подставляйте:
Если pdoTools не установлен, то сделайте простенький сниппет getSubj:
И тогда так:
Одновременно с Алексеем )))
<a data-type="iframe" class="button-link" data-src="[[~7? &subject=`Тема1`]]" href="javascript:;">Заказать</a>
А в самой форме ловите и подставляйте:
<input name="subject" value="[[!#GET.subject:default=`Тема письма по-умолчанию`]]" />
Если pdoTools не установлен, то сделайте простенький сниппет getSubj:
<?php
return htmlentities(trim(strip_tags((string) $_GET['subject'])), ENT_QUOTES, 'UTF-8', false);
И тогда так:
<input name="subject" value="[[!getSubj:default=`Тема письма по-умолчанию`]]" />
PS Одновременно с Алексеем )))
Алексей и Павел, спасибо!
Испробовал оба варианта, всё работает.
И если в тело извещения добавить «subject»
Стал немного умнее в MODX :)
Испробовал оба варианта, всё работает.
И если в тело извещения добавить «subject»
<p>Тема: "Пришел заказ на тариф [[+subject]] с вашего сайта [[++site_name]]"</p>
то тоже нужная тема подтягивается.Стал немного умнее в MODX :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.