Если использовать больше одной формы на одной странице, происходит их "синхронизация". При отправке сообщения из одной формы, вторая тоже реагирует на это событие. Как сделать формы независимыми?
Формы сейчас подключаются так же, как на странице "Контакты" (посмотреть можно в shared/type/contact/contact.php):
$form = '[form] [field] require = 1 type = text descripti имя placeholder = Ваше имя [/field] [field] require = 1 type = textarea descripti вопрос placeholder = О чем вы хотите написать? [/field] [/form]'; $form = str_replace("\r", "", $form); $form = str_replace("\n", "_NR_", $form); if (!function_exists('forms_content')) { require_once(getinfo('plugins_dir') . 'forms/index.php'); } echo forms_content(str_replace("_NR_", "\n", $form));
5 3522
Еще записи по теме
- Как проматывать страницу до сообщения об успешной отправке плагина FORMS?
- Как разместить lightslider над контентом записи?
- Почему не срабатывает защита от спама в плагине forms?
- Вопрос по логин-форме
- И снова про визуальные редакторы
- Как выводить короткое описание записей на главной в шаблоне Max-Zmey?
- Где взять пример кода для type_foreach файла?
Думаю, что пока это невозможно сделать. Просто такое не предусмотрено в плагине forms. В плагине нет средств идентификации формы и логики распознавания источника присланных данных при обработке POST запроса от формы. Надо писать пожелание Максиму.
А если "напильником" доделывать, меня бы пока и такой вариант устроил. В какую сторону смотреть? Я попытаюсь сама пока сделать, временный вариант.
Ну так в сторону кода плагина forms и смотреть Там разбросано по нескольким фрагментам места, где надо бы поправить, чтобы решить вашу задачу. Так что всё равно вам нужно ознакомиться со всем кодом плагина.
Думаю, что проще код написать, чем заниматься объяснениями по этому вопросу, но времени особо нет. Поэтому попробую дать наводку.
Во-первых, хорошо бы добавить форме параметр идентификации (эдакий form_id ). Найдите такой код в функции forms_content_callback и сделайте по аналогии:
Во-вторых, нужно передавать в функцию forms_show_form этот form_id и потом добавлять в html-код формы hidden поле, по аналогии с кодом:
В третьих, в функции forms_content_callback в коде:
нужно добавить проверку form_id и если распаресенное значение параметра не совпадает с присланным в $_POST, то игнорировать POST.
Только нужно сделать всё так, чтобы без параметра form_id форма работала как обычно.
Выше была логика для 0.862. В 0.90 логика плагина forms изменилась. Теперь параметр нужно задавать в секции [options] и нужно смотреть код (который отвечает за распознавание опции):
Собственно, достаточно прописать в настройках формы примерно так:
и form_id будет доступен в плагине.
Тогда заботиться о передаче form_id в forms_show_form уже не нужно, т.к. он будет передан в рамках переменной $options.
Остаётся только организовать вывод html и обработку POST. Приём POST теперь нужно смотреть в forms_content_post, но логика примерно такая же, как я и писал ранее.