@zero_machine

Как передать параметр форме при её вызове через анкор?

Имеется сайт с каталогом ресурсов, превью которых выводятся на главную через pdoTools.
На превью каждого объекта размещена кнопка для вызова формы обратной связи в фэнсибоксе. Как сделать так, что бы вызванная форма передавала скрытыми полями значения +pagetitle и +uri именно того превью, с которого она была вызвана?

Паршивый вариант реализации: добавить в шаблон вывода информации о ресурсе (&tpl) скрытой формы с уже предустановленными значениями.
Тогда на главную будут выведены 9 (например) превью товаров и 9 скрытых форм. Но это не только говнокод, но и очень печально для СЕО. Поэтому нужно найти вариант реализации с использованием только одной формы на странице, скрытые поля которой будут заполнятся скрытыми данными из превью товара.

Теоретически, можно использовать JS для перехвата данных, повесив его на событие - клик по ссылке (анкору), в которую можно и значения для вывода загнать...
&tpl= >a href="#modal" class="start" data-hidden-name="[[+pagetitle]]" data-hidden-link="[[+uri]]">тыц >/a>

Форма на странице
> form method="post" action="[[~[[*id]]]]">
> input type="hidden" value="123" name="pagetitle">
> input type="hidden" value="321" name="uri">
> input type="submit" name="submit" class="btn btn-orange" value="Отправить">

При событии клик по > a class="start"> 123 заменяется на значение data-hidden-name, 321 заменяется на значение data-hidden-link.
При клике по кнопке submit FormIt отправляет сообщение.

Соответственно, возникают три вопроса:
1) Как это сделать?
2) Как передать данные именно от нужного превью товара, когда на странице их несколько.
3) Как почистить эти значения формы после отправки, дабы можно было повторить манёвр со следующим товаром?
  • Вопрос задан
  • 403 просмотра
Пригласить эксперта
Ответы на вопрос 3
Используйте плагин FormIt
Ответ написан
igamov
@igamov
†Верстайло ракамакафо†
Сделать можно через JS. Каждый раз по идее должен быть разный pagetitle, т.к. выводите через pdoTools
Html
<a href="#" id="button" title="[[+pagetitle]]"/>
<div class="pop-up">
<form method="post">
<input type="hidden" class="my_input">
</form>
</div>

JS
$( "#button" ).click(function(){
    var title = $(this).attr('title');
   $('.pop-up').find('.my_input').val(title);
  });
Ответ написан
Комментировать
Derzaiii
@Derzaiii
Типичный телец
Я подобную задачу реализовывал вот так:

1) к вызову модального окна добавлял параметры -

...href="[[~55]]?par1=[[+pagetitle]]&par2=[[+uri]]"....


2) Добавил сниппеты для вытаскивания этих параметров из адресной строки

par1 -
<?php echo isset($_GET['par1']) ? $_GET['par1'] : '' ;

par2 -
<?php echo isset($_GET['par2']) ? $_GET['par2'] : '' ;


3) В форму обратной связи которая вызывается ссылкой добавил два скрытых поля:

<input type="hidden" name="par1" class="source" value="[[!par1]]" />
<input type="hidden" name="par2" class="source" value="[[!par2]]" />


4) И последнее - в чанк уходящий на почту вставляем :

Параметр 1 -[[+par1]]
Параметр 2 - [[+par2]]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы