Показать страницу, с которой отправлено сообщение

Всем привет! В заголовок не влезла вся суть проблемы, и вопрос не ограничится строкой

<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]]"/>
...
Виктор
13 августа 2017, 13:25
modx.pro
4
1 838
+1
Поблагодарить автора Отправить деньги

Комментарии: 6

Александр Туниеков
13 августа 2017, 22:55
+1
Вы можете сделать 2 способами:
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]]"/>
...
    Виктор
    13 августа 2017, 23:33
    0
    Благодарю за ответ!

    Первый вариант не годится, т.к. мне нужно все-таки название не текущей страницы, а превью показать.

    А вот второй самое то должно быть! Попробую его и отпишусь
      Александр Туниеков
      14 августа 2017, 00:11
      +1
      Сейчас не могу понять как мне вообще второй вариант в голову пришел :). Но вот как то же пришел и такое работает :).
      $content = $pdo->getChunk($tpl, $scriptProperties);

      Здесь форму передаются все параметры сниппета. А вот если бы не эта строка в AjaxForm, то это не сработало бы.
      Василий свои сниппеты как-то многофункционально пишет :)
        Андрей
        14 августа 2017, 00:28
        +5
        Форму вызываю из каждого превью

        Нафига плодить кучу форм, проще вызывать форму один раз на странице, в кнопку добавить атрибут 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="" />
          Виктор
          14 августа 2017, 12:08
          0
          Андрей, благодарю, что обратили внимание на вызов. Действительно топорно :) Со скриптом отлично получилось! Огромное человеческое спасибо!

          Добавил по аналогии еще родителя, так что в письме пользователю приходит и эта информация
          Виктор
          14 августа 2017, 12:03
          0
          Александр, все супер! Работает! Ещё раз спасибо :) Буду брать на вооружение этот прием!

          Но, как Андрей заметил, сам вызов оставляет желать лучшего и куча форм не выход. так что в итоге его способ прижился.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6