Как сделать одну форму на formit c разными темами

Здравствуйте.
Делаю лендинг на 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. Буду благодарен, если кто-нибудь подскажет именно решение, а не направление. По направлениям я уже второй день брожу, да без толку :-)
Дмитрий
14 июля 2017, 07:04
modx.pro
1
2 128
0

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

Наумов Алексей
14 июля 2017, 10:17
0
docs.modx.com/extras/revo/formit/formit.hooks/formit.hooks.email

3-я строка в таблице Available Properties
    Дмитрий
    14 июля 2017, 10:24
    0
    Прочитал.
    Прочитал ещё раз тут promo-creative.com/formit.html
    Потом перечитал всё это.
    Но так и не понял, как это относится к моему вопросу :)
      Алексей Ерохин
      14 июля 2017, 10:46
      +1
      Ставите в вызове формита параметр emailUseFieldForSubject = 1 и в форме добавляете поле (хоть скрытое) subject, куда пишете тему письма, тут должен сработать чанк с параметрами, а вызов формита нужен всего 1 в начале страницы.
        Дмитрий
        14 июля 2017, 10:51
        0
        Если я напрямую в форме напишу тему письма, то мне и придется плодить этих форм огромную гору. Я бы ещё вчера накопировал форм, если бы мне казалось это приемлемым решением.
        Но я-то как раз хочу уйти от этого. Сделать так, что бы было:
        Форма — одна
        subject — разный.
          Алексей Ерохин
          14 июля 2017, 10:54
          +1
          Кладете форму в чанк. В параметрах ему передаете тему письма. И на странице вызываете чанк с параметром.
          Ну или делаете 1 форму и javascript'ом при нажатии кнопки отправить ставите нужную тему в поле.
            Дмитрий
            14 июля 2017, 11:01
            0
            Без js можно сделать? Одна форма = 7 разных `subject` за счет параметров?
            Если можно — через скайп подскажете? 300 руб. на ЯД закину.
            Или мало?
              Наумов Алексей
              14 июля 2017, 11:04
              +1
              Делаете чанк form, в котором есть:

              <input name="subject" value="[[+subject:default=`Тема письма по-умолчанию`]]" />
              Вызываете этот чанк 7 раз:
              [[$form? &subject=`Тема 1`]]
              [[$form? &subject=`Тема 2`]]
              ...
              [[$form? &subject=`Тема 7`]]
              А в обработчике ставите emailUseFieldForSubject = 1, emailSubject оставляете при этом пустым
                Дмитрий
                14 июля 2017, 11:14
                0
                Формы все в попапах. Поэтому я вызываю не чанк, а ресурс, через фанцибокс:
                <a data-type="iframe" class="button-link" data-src="[[~7]]" href="javascript:;">Заказать</a>
                А в ресурсе уже хранится форма. Я могу положить форму в чанк и сделать его вывод в данном ресурсе. Но только один раз. Если 7 — то и будет семь форм во всплывашке.
                  Наумов Алексей
                  14 июля 2017, 11:26
                  +1
                  Тогда так:

                  ...data-src="[[~7]]?subjectId=1"...

                  <input name="subject" value="[[!getSubject]]" />

                  getSubject:

                  $subjectId=$_GET['subjectId'];
                  if($subjectId == 1) {
                  	return 'Тема письма 1';
                  }
                    Павел Романов
                    14 июля 2017, 11:32
                    +1
                    Добавьте GET-параметр в кнопку:
                    <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
                    Одновременно с Алексеем )))
                      Дмитрий
                      14 июля 2017, 12:18
                      0
                      Алексей и Павел, спасибо!
                      Испробовал оба варианта, всё работает.
                      И если в тело извещения добавить «subject»
                      <p>Тема: "Пришел заказ на тариф [[+subject]] с вашего сайта [[++site_name]]"</p>
                      то тоже нужная тема подтягивается.
                      Стал немного умнее в MODX :)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11