Несколько форм на одной странице AjaxForm [Решено]
На странице выводится список услуг (дочерние ресурсы) c кнопкой ЗАКАЗАТЬ
Как реализовать чтобы в сабжах отправляемых писем вставлялся {$pagetitle} ресурса соответствующей услуги
Вызов AjaxForm:
Как реализовать чтобы в сабжах отправляемых писем вставлялся {$pagetitle} ресурса соответствующей услуги
{'!pdoPage' | snippet : [
'ajaxMode' => 'default',
'tpl' => '@INLINE
***
<h2 class="media-heading">{$pagetitle}</h2>
***
<button type="button" class="btn btn-secondary btn-lg btn-block" data-toggle="modal" data-target="#adviceModal">ЗАКАЗАТЬ</button>
***
{$content}
***',
'limit' => 10,
'includeTVs' => 'img',
'tvPrefix' => '',
'includeContent' => 1,
]}
По клику на кнопку ЗАКАЗАТЬ открываются модальные окна BootstrapВызов AjaxForm:
[[!AjaxForm?
&snippet=`FormIt`
&form=`kontact-form`
&emailTpl=`tpl-kontact-form`
&hooks=`spam,email`
&emailSubject=`Сообщение с сайта [[++site_url]]`
&emailTo=`***@gmail.com`
&validate=`name:required,email:required`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Сообщение успешно отправлено!`
]]
Решение в комменте ниже Комментарии: 7
Для заголовка услуги прописываешь в чанке:
По поводу модального окна, вешаешь событие af_complete и в нём запускаешь модальное окно.
docs.modx.pro/komponentyi/ajaxform#%D0%A1%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B5-af_complete
{$_modx->resource.pagetitle}
По поводу модального окна, вешаешь событие af_complete и в нём запускаешь модальное окно.
docs.modx.pro/komponentyi/ajaxform#%D0%A1%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B5-af_complete
$('#myModal').modal('show');
ответ слишком сложный для меня, можно поподробнее?
1. в каком чанке нужно прописать?
2. «вешаешь событие af_complete» — куда его «вешать»?
Я думал нужно здесь что-то менять:
1. в каком чанке нужно прописать?
{$_modx->resource.pagetitle}
Если прописываю в &form=`kontact-form`
&emailTpl=`tpl-kontact-form`
получаю только заглавие страницы списка услуг в форме.2. «вешаешь событие af_complete» — куда его «вешать»?
Я думал нужно здесь что-то менять:
&emailSubject=`Сообщение с сайта [[++site_url]]`
Чтобы в заголовке письма вместо «Сообщение с сайта...» был указан нужный pagetitle дочернего ресурса.
Не так прочитал изначально вопрос.
Тогда…
Параметр successMessage лежит в сессии в массиве AjaxForm => Ключ Формы => successMessage
Ключ формы лежит в элементе input с именем af_action
Вижу такой вариант, что перед открытием формы мы посылаем ajax запрос с заголовком и ключом формы, который нам нужно отображать в сабже письма. Собственно, присваиваем в сессию параметру successMessage тот заголовок, который мы передали по ajax. Модальное окно открывается, спокойно заполняем форму и письмо приходит уже с этим заголовком.
Тогда…
Параметр successMessage лежит в сессии в массиве AjaxForm => Ключ Формы => successMessage
Ключ формы лежит в элементе input с именем af_action
Вижу такой вариант, что перед открытием формы мы посылаем ajax запрос с заголовком и ключом формы, который нам нужно отображать в сабже письма. Собственно, присваиваем в сессию параметру successMessage тот заголовок, который мы передали по ajax. Модальное окно открывается, спокойно заполняем форму и письмо приходит уже с этим заголовком.
Через жквери делайте. При клике на услугу, считываете из соответствующего дива название услуги, а потом это название в скрытое поле в форме передаете, соответственно отправляется форма с названием услуги.
Решение (Благодаря помощи Павла Романова)
В чанк kontact-form добавляем скрытое поле:
Добавляем где-нибудь на странице функцию:
В чанк kontact-form добавляем скрытое поле:
<input type="hidden" value="" name="itemtitle" class="itemfield" />
Добавляем в кнопку обработчик клика onclick=«getItem('{$pagetitle}');»:<button type="button" class="btn btn-secondary btn-lg btn-block" data-toggle="modal" data-target="#adviceModal" onclick="getItem('{$pagetitle}');">ЗАКАЗАТЬ</button>
и выносим в вызове pdoPage в чанк, либо заменяем ('{$pagetitle}') на (\'{$pagetitle}\') Добавляем где-нибудь на странице функцию:
<script>
function getItem(i){
$('.itemfield').val(i);
}
</script>
В вызов ajaxForm прописываем:&emailSubject=`[[+itemtitle]]`
у меня сработало.
Это было первым, что пытался реализовать, но как подружить кирилический pagetitle состоящий из 5-8 слов и data-whatever="@mdo" мне, видимо, смекалки не хватило
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.