Во фреймворке Webasyst, на основе которого работает Shop-Script, есть встроенная возможность быстро добавить форму обратной связи на любую страницу сайта:
- В приложении «Сайт» перейдите в раздел Блоки.
- Выберите блок с названием «site.send_email_form».
- Щелкните по фрагменту кода под надписью «Встроить на страницу или в шаблон».
- Скопируйте выделенный фрагмент кода и вставьте его в HTML-код любой страницы или шаблон темы дизайна.
Вот так выглядит стандартная форма обратной связи, с помощью которой любой посетитель сайта сможет отправить вам сообщение:

Несколько хитростей
Как изменить адрес, на который отправляются сообщения обратной связи
Сообщения, которые посетители сайта оставляют через форму обратной связи, отправляются на email-адрес, указанный в поле «Email-адрес для уведомлений» в приложении «Настройки».

Вы можете ввести в этом поле любой другой адрес, и в этом случае все общесистемные уведомления, включая сообщения обратной связи, будут отправляться на указанный здесь email-адрес.
Если вы не хотите изменять содержимое поля «Email» в «Инсталлере», то можно указать адрес получателя сообщений обратной связи в исходном коде блока «site.send_email_form». Для этого добавьте нужный email-адрес внутри кавычек, как показано ниже:
$wa->sendEmail("admin@mycompany.ru", $errors)
Можно указать и несколько адресов получателей:
Простой формат (только адреса)
{$wa->sendEmail(['address1@domain.ru', 'address2@domain.ru'], $errors)}
Расширенный формат (адреса получателей с их именами)
{$wa->sendEmail(['address1@domain.ru' => 'Имя1', 'address2@domain.ru' => 'Имя2'], $errors)}
Как убрать поле для ввода защитного кода (капчи)
Для защиты от автоматически добавляемых сообщений (спама) в форме обратной связи используется поле для ввода защитного кода (капчи).
Если вы считаете, что необходимость вводить защитный код мешает посетителям вашего сайта быстро и удобно отправить сообщение, то можете отключить это поле. Для этого нужно перед строкой с вызовом метода {$wa->sendEmail(...)} добавить следующее:
{$wa->storage(['captcha', $wa->app()], '')}
Таким образом вы «говорите» фреймворку Webasyst, что правильной капчей является пустая, т. е. сообщение отправится, если ничего не написать в поле для ввода защитного кода.
Теперь осталось убрать поле для ввода защитного кода, чтобы оно не вводило в заблуждение посетителей сайта. Для этого удалите из исходного кода блока «site.send_email_form» следующий фрагмент:
<div class="wa-field"> <div class="wa-value"> {$wa->captcha(!empty($errors.captcha))} {if !empty($errors.captcha)}<em class="wa-error-msg">{$errors.captcha}</em>{/if} </div> </div>
59 комментариев
Сделано всё по инструкции, однако форма не работает, пишет в ответ "Во время отправки произошла ошибка. Попробуйте позже". Сайт http://шелл-вуд.рф/ . В чём может быть причина? В настройках адрес е-майл не с домена сайта, может быть в этом проблема?
Скорее всего, да. Посмотрите логи Вебасиста — возможно, там будет сообщение о чём-то подобном. Если нет, уточните у хостера, можно ли использовать указанный в настройках адрес в качестве отправителя сообщений с вашего домена.
как добавить прикрепление файлов? И желательно с ограничением размера, в 20 мб.
Такой возможности в этом блоке Сайта нет. Возможность прикреплять файлы к сообщениям, отправляемым с сайта, позволяет, например, приложение Поддержка. Разработчикам приложения Сайт отправили пожелание добавить эту возможность.
Появилась ли возможность прикреплять файлы к форме? 3 года назад писали что сообщите разработчикам. Сайт в облаке.
Эта возможность не появилась. Попробуйте поискать приложение или плагин для решения этой задачи в магазине Webasyst.
Возможно спустя 6 лет что то поменялось и все таки эту возможность добавили?
Эту возможность ещё не добавили.
Возможность прикреплять файлы не добавили и добавлять не собираются получается? Прошло 7 лет. А нельзя написать ответ, что данная возможность вообще не планируется добавляться в стандартный функционал и точка, чтобы людям было понятно? Очень конечно во многих смыслах не понятна логика разработчика фреймворка по поводу казалось бы очевидных минимальных функциях. Мда, деньги рулят.
Такой ответ написать нельзя, потому что он может быть неправдой, поскольку планы разработки время от времени изменяются в зависимости от текущих условий и потребностей пользователей.
Проголосуйте, пожалуйста, за такое предложение в специальном разделе форума поддержки. Или добавьте новое предложение на форуме, если его там ещё нет.
Если решение этой задачи вам нужно в ближайшее время, поищите подходящий программный продукт в магазине Webasyst или обратитесь за индивидуальной разработкой к нашим партнёрам.
Перейдите в wa-system\view\waViewHelper.class.php, в самом файле найдите функцию "sendEmail"(данная функция отвечает за форму обратной связи) и добавьте свои поля. После чего перейдите на сторону админа Webasyst->Сайт->Блоки->Выберите блок, который отвечает за отправку формы(по умолчанию блок имеет название "site.send_email_form") и измените или добавьте DOM-элементы.
Вуаля и все готово! ;)
Denis, скажите пожалуйста где найти wa-system\view\waViewHelper.class.php ?
Этот файл нужно искать на сервере, где установлен Webasyst. Но после каждого обновления фреймворка Webasyst вам придётся вносить эти изменения заново. Учтите это.
добрый день.
используется стандартная форма для обратной связи (немного изменили css-стили формы вот здесь), но при отправке формы выводится сообщение: Во время отправки произошла ошибка. Попробуйте позже. Cкриншот!
Почту пробовал разную, не помагает. На тестовом сервере (который на другом хостинге) тоже тестировал отправку на разные почты - все работает (даже если адрес почты не с домена сайта), код формы копировал туда из основного сайта.
В логах сайта и на хостинге тоже ничего не нахожу.
Подскажите, куда еще смотреть?
Возможно, ваш хостинг-провайдер не позволяет отправлять сообщения с адреса отправителя, указанного в настройках Инсталлера. Попробуйте создать файл wa-config/mail.php следующего содержания:
Спасибо большое! Проблема решена
Здравствуйте!
Наш провайдер в целях борьбы со спамом заменяет адрес отправителя в исходящем письме, если он не относится к тому же доменному имени, на технический адрес хостинга.
То есть, когда мы для теста формы обратной связи указываем адрес с нашего же магазина, письма приходят четко.
А когда клиент указывает свое имя и емейл, то мы вместо имени и емейла покупателя видим всегда один и тот же адрес отправителя- технический адрес хостинга.
Консультировались с админами хостинга- эту систему они не намерены изменять. Возможно ли как то включать имя и емейл клиента в тело письма, в начале, а то мы просто не можем иначе давать обратную связь - некуда.
То есть емейл мы еще можем выковырять из заголовков письма, а вот имя из кириллицы кодируется, и разобрать его не получается...
Спасибо!
1. В коде блока site.send_email_form замените строку
на
2. В этом же блоке после блока
добавьте
Этот JavaScript-код будет при попытке отправки сообщения копировать значения из полей "Имя" и "Email" в начало текста сообщения.
Помогите, нужно получить стандартную форму:
имякомпания
телефон
текст
прикрепить файл
Для решения вашего вопроса потребуется дополнительная разработка. Попробуйте задать отдельный вопрос в хабе поддержки или обратитесь к экспертам Webasyst.
Здравствуйте!
Подскажите как менять адрес отправителя? Чтобы он брался не из поля Email, а был фиксированный, нужный мне.
Для решения вашего вопроса потребуется дополнительная разработка. Попробуйте задать отдельный вопрос в хабе поддержки или обратитесь к экспертам Webasyst.
пустая страница после отправки, отправка не происходит. Пробовал и smtp и обычную отправку - один результат. И капчу отключал.
Установите приложение "Логи", включите в его настройках логирование ошибок PHP и повторите попытку отправки. Покажите, какие новые сообщения появляются в логах после этого.
Хочу отключить captcha, но не получается. У меня стандартный код шаблона почему-то отличается от описанного Вами и выглядит он так:
{$errors = array()}
{if $wa->post("send") and $wa->sendEmail("", $errors)}
Куда мне надо вставить {$wa->storage(['captcha', $wa->app()], '')} что бы все заработало?
Перед строкой с вызовом метода $wa->sendEmail()}, как написано в статье.
Не помогает.
А как добавить ещё поле? Допустим телефон?
Для этого потребуется дополнительное программирование. Задайте вопрос об этом в отдельной теме в хабе поддержки, пожалуйста, или поищите решение с помощью функции поиска.
Перейдите в wa-system\view\waViewHelper.class.php, в самом файле найдите функцию "sendEmail"(данная функция отвечает за форму обратной связи) и добавьте свои поля. После чего перейдите на сторону админа Webasyst->Сайт->Блоки->Выберите блок, который отвечает за отправку формы(по умолчанию блок имеет название "site.send_email_form") и измените или добавьте DOM-элементы.
Вуаля и все готово! ;)
а как эту капчу можно поменять на капчу от google?
Для этого потребуется дополнительное программирование. Подробную поддержку по редактированию исходного кода программных продуктов вы также можете получить от экспертов Webasyst.
Для смены капчи не требуется "дополнительное программирование"! Вам стоит зайти на стороне админа "Webasyst" в Магазин->Витрина->Выбрать ваш домен сайта->Настройки->Общие настройки, далее найти пункт капча и выбрать необходимую для Вас("Капча Webasyst","Google reCAPTCHA")
Ничего подобного, SS не реагирует на сменю капчи по этому пути. Для регистрации меняет, а вот для формы обратной связи через {$wa->sendEmail(...)} ничего не меняется. Столько лет на рынке этот движок, а такие детские болячки... Стыдоба
В 2020г., уже всё иначе. Капча гугла подтягивается.
в базу ничего не пишется что ли???
Отправляемые сообщения в базу данных не сохраняются.
Подскажите, пожалуйста. Письма бросаються в спам, что поменять нужно? Спасибо большое.
Проверьте наличие ip-адреса в СПАМ базах, например тут
Проверьте MX записи DNS, а также остальные, тут коротко расписано
Здравствуйте.
Как в форму можно добавить дополнительные поля , например телефон, модель, серийный номер?
Есть несколько вариантов решения: дорогие либо сложные.
Дорогой: использовать для формирования форм обратной связи приложение "Поддержка": https://support.webasyst.ru/3478/request-form-create-and-publish/
Сложный: написать (или заказать) JavaScript-код, который будет копировать содержимое дополнительных полей в поле "Текст сообщения" и после этого отправлять сообщение обычным образом.
Как сделать, что бы отправителем указывался e-mail клиента, а не тот что прописан в инсталлере?
Ваш веб- или почтовый сервер может не позволить использовать произвольные адреса отправителей для сообщений, отправляемых с вашего домена. Обычно так не стоит делать.
можно ли встроить форму не на страницу магазина, а в какую-либо категорию в товарах? html не встраивается... не положено или неправильно делаю что?
Для того чтобы код Smarty срабатывал в HTML-описаниях категорий или товаров, нужно создать конфигурационный файл wa-config/apps/shop/config.php:
и очистить кеш в Инсталлере.
Приветствую!
В бэкенде сайта сделано 2 блока с почти одинаковым кодом, оба шорт-кода вставлены на 1 станице, при заполнении одной формы, отправляется 2 одинаковых письма на почту.
Подскажите пожалуйста, как правильно сделать 2 формы на одной странице?
Решили как-либо данную проблему?
Для уточнения прикрепляю скрин. Два блока контактной формы callback и site.send_email_form.
Все сделал как написано. Но не работает.
1 раз вставил в HTML просто код. В итоге:
2 попытка вставил весь код и вот что вышло.
Почему не работает? что нужно сделать??
Напишите нам в службу поддержки — изучим проблему подробнее и попробуем предлолжить решение.
Было бы очень хорошо и правильно запретить отправку сообщений с HTML-тегами через форму обратной связи site.send_email_form
Или расскажите клиентам как добавить такой запрет в код формы.
По крайней мере запретить отправку сообщений с </a>, http:// и https:// в теле сообщения.
Боты стали пробивать капчу и слать спам через обратную связь.
Пожелания по доработке программных продуктов публикуйте, пожалуйста, в специальном разделе форума поддержки. Так их удобнее регистрировать и обсуждать, если потребуется. Или голосуйте за уже опубликованные предложения других пользователей.
Опубликовал https://support.webasyst.ru/fo...
Честно говоря публиковал тут, а не в разделе с пожеланиями т.к. думал, что просто добавите в этой же статье, в "несколько хитростей" еще один блок "Как убрать в форме возможность оставить комментарий с HTML-тегами" (по аналогии с "Как убрать поле для ввода защитного кода").
А не будете делать доработку.
Поскольку проблема вызвана действиями ботов, проверку или фильтрацию надо выполнять на стороне сервера. А в коде блока site.send_email_form, кажется, нет таких средств — нужно изменять логику работы PHP-кода.
Добрый день, всем. Все работает. Но тут к сожалению ограниченные возможности формы. Изучил обработчик wa-system/view/waViewHelper.class.php
Возможно ли расширить функционал, Например:
- добавить другие свои поля для разного типа
- при успешной отправке данные записывать в таблицу (для дальнейшего отчета)
Понимаю что изменение системного файла нельзя так как при обновлении все сотрется. возможно ли для таких целей написать плагин например? Или в блоке site.send_email_form можно свой Php код добавить синтаксисом в smarty?
Возможно, более надёжным способом решить задачу было бы написать свой плагин или приложение с нужными вам возможностями. Или поискать подходящий готовый продукт в магазине Webasyst.
Спамеры вообще оборзели сыпят спам тоннами, все формы обратной связи в особенности вот это приложение ушатываю на раз два https://www.webasyst.ru/store/...
И разработчик не охото отвечает видимо забил.
Неужели нельзя сделать нормальную форму по умолчанию что бы была рабочая с защитой, и шла с движком вкомплекте?
Опишите в специальном разделе на форуме поддержки, как должна работать форма обратной связи, на ваш взгляд.