Показать страницу, с которой отправлено сообщение
Всем привет! В заголовок не влезла вся суть проблемы, и вопрос не ограничится строкой
Дело вот в чем:
— Есть список ресурсов, выводимых через pdoTools.
— В каждом превью есть кнопка «заказать»
— При заказе нужно показать в письме, с какого превью отправлено сообщение
Если использовать formit, конструкция выше прекрасно работает, т.к. сама форма пишется следом за вызовом сниппета. Но в случае с AjaxForm форма находится в отдельном чанке — &form=`tpl.AjaxForm.example` и если в него добавить [[+pagetitle]], то уже ничего не отобразится. Если просто удалить этот параметр и поставить тег после вызова — так же ничего.
Вопроса два:
1. Можно ли при вызове AjaxForm саму форму разместить рядом, а не в чанке:
2. Можно ли вывести в чанке tpl.AjaxForm.example подобное поле — [[+pagetitle]]
Форму вызываю из каждого превью
Или может я вообще что-то не так делаю и есть более удачное решение?
РЕШЕНИЕ (Спасибо Андрею):
1. На кнопку открытия модального окна с формой поставил:
2. В подвал:
3. В форму:
4. В письма:
По ходу дела нашлась еще фишка (спасибо Александру):
Можно при вызове AjaxForm добавить в него произвольный параметр:
и вывести его в чанке формы tpl.AjaxForm.example
<input type="hidden" name="pagename" value="[[*pagetitle]]" />
Дело вот в чем:
— Есть список ресурсов, выводимых через pdoTools.
— В каждом превью есть кнопка «заказать»
— При заказе нужно показать в письме, с какого превью отправлено сообщение
Если использовать formit, конструкция выше прекрасно работает, т.к. сама форма пишется следом за вызовом сниппета. Но в случае с AjaxForm форма находится в отдельном чанке — &form=`tpl.AjaxForm.example` и если в него добавить [[+pagetitle]], то уже ничего не отобразится. Если просто удалить этот параметр и поставить тег после вызова — так же ничего.
Вопроса два:
1. Можно ли при вызове AjaxForm саму форму разместить рядом, а не в чанке:
[[!AjaxForm?
...
]]
<form></form>
2. Можно ли вывести в чанке tpl.AjaxForm.example подобное поле — [[+pagetitle]]
Форму вызываю из каждого превью
<a data-fancybox data-src="#hidden-content-[[+id]]" href="javascript:;" class="btnOrder btn-order-y">Заказать</a>
<div style="display: none;" id="hidden-content-[[+id]]">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Заказ услуги</h4>
</div>
<div class="modal-body">[[$af.call-srv]]</div>
</div>
</div>
</div>
Или может я вообще что-то не так делаю и есть более удачное решение?
РЕШЕНИЕ (Спасибо Андрею):
1. На кнопку открытия модального окна с формой поставил:
data-name="[[+pagetitle]]"
2. В подвал:
<script>
$(document).on('click', '.btnOrder', function(e) {
var title = $(this).data('name');
$("#order-title").val(title);
});
</script>
3. В форму:
<input type="hidden" id="order-title" name="order-title" value="" />
4. В письма:
[[+order-title]]
По ходу дела нашлась еще фишка (спасибо Александру):
Можно при вызове AjaxForm добавить в него произвольный параметр:
[[!AjaxForm?
&test=`3`
...
и вывести его в чанке формы tpl.AjaxForm.example
<form action="" method="post">
<input type="hidden" name="test" value="[[+test]]"/>
...
Поблагодарить автора
Отправить деньги
Комментарии: 6
Вы можете сделать 2 способами:
1)
2)Можно при вызове AjaxForm добавить в него произвольный параметр:
1)
Но в случае с AjaxForm форма находится в отдельном чанке — &form=`tpl.AjaxForm.example` и если в него добавить [[+pagetitle]], то уже ничего не отобразитсяЕсли в форму добавить [[*pagetitle]], то в форме отобразиться страница с которой вызван AjaxForm.
2)Можно при вызове AjaxForm добавить в него произвольный параметр:
[[!AjaxForm?
&test=`3`
...
и вывести его в чанке формы tpl.AjaxForm.example<form action="" method="post">
<input type="hidden" name="test" value="[[+test]]"/>
...
Благодарю за ответ!
Первый вариант не годится, т.к. мне нужно все-таки название не текущей страницы, а превью показать.
А вот второй самое то должно быть! Попробую его и отпишусь
Первый вариант не годится, т.к. мне нужно все-таки название не текущей страницы, а превью показать.
А вот второй самое то должно быть! Попробую его и отпишусь
Сейчас не могу понять как мне вообще второй вариант в голову пришел :). Но вот как то же пришел и такое работает :).
Здесь форму передаются все параметры сниппета. А вот если бы не эта строка в AjaxForm, то это не сработало бы.
Василий свои сниппеты как-то многофункционально пишет :)
$content = $pdo->getChunk($tpl, $scriptProperties);
Здесь форму передаются все параметры сниппета. А вот если бы не эта строка в AjaxForm, то это не сработало бы.
Василий свои сниппеты как-то многофункционально пишет :)
Форму вызываю из каждого превью
Нафига плодить кучу форм, проще вызывать форму один раз на странице, в кнопку добавить атрибут data:
data-name="[[+pagetitle]]"
Событие по клику:
$(document).on('click', '.btnOrder', function(e) {
var title = $(this).data('name');
$("#order-title").val(title);
});
Input в форме:
<input type="hidden" id="order-title" name="order-title" value="" />
Андрей, благодарю, что обратили внимание на вызов. Действительно топорно :) Со скриптом отлично получилось! Огромное человеческое спасибо!
Добавил по аналогии еще родителя, так что в письме пользователю приходит и эта информация
Добавил по аналогии еще родителя, так что в письме пользователю приходит и эта информация
Александр, все супер! Работает! Ещё раз спасибо :) Буду брать на вооружение этот прием!
Но, как Андрей заметил, сам вызов оставляет желать лучшего и куча форм не выход. так что в итоге его способ прижился.
Но, как Андрей заметил, сам вызов оставляет желать лучшего и куча форм не выход. так что в итоге его способ прижился.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.