Как добавить форму обратной связи на витрину Shop-Script

Во фреймворке Webasyst, на основе которого работает Shop-Script, есть встроенная возможность быстро добавить форму обратной связи на любую страницу сайта:

  1. В приложении «Сайт» перейдите в раздел Блоки.
  2. Выберите блок с названием «site.send_email_form».
  3. Щелкните по фрагменту кода под надписью «Встроить на страницу или в шаблон».
  4. Скопируйте выделенный фрагмент кода и вставьте его в 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 комментариев

  • +1
    Robur Robur 19 мая 2015 13:00 #

    Сделано всё по инструкции, однако форма не работает, пишет в ответ "Во время отправки произошла ошибка. Попробуйте позже". Сайт http://шелл-вуд.рф/ . В чём может быть причина? В настройках адрес е-майл не с домена сайта, может быть в этом проблема?

    • +1

      Скорее всего, да. Посмотрите логи Вебасиста — возможно, там будет сообщение о чём-то подобном. Если нет, уточните у хостера, можно ли использовать указанный в настройках адрес в качестве отправителя сообщений с вашего домена.

    • +1
      Юля Начарова Юля Начарова 13 июля 2015 10:33 #

      как добавить прикрепление файлов? И желательно с ограничением размера, в 20 мб.

      • +1

        Такой возможности в этом блоке Сайта нет. Возможность прикреплять файлы к сообщениям, отправляемым с сайта, позволяет, например, приложение Поддержка. Разработчикам приложения Сайт отправили пожелание добавить эту возможность.

        • +1
          Yasmand Group Yasmand Group 27 ноября 2018 09:53 #

          Появилась ли возможность прикреплять файлы к форме? 3 года назад писали что сообщите разработчикам. Сайт в облаке.

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 27 ноября 2018 12:55 #

            Эта возможность не появилась. Попробуйте поискать приложение или плагин для решения этой задачи в магазине Webasyst.

            • +1

              Возможно спустя 6 лет что то поменялось и все таки эту возможность добавили?

              • +1
                Михаил Ушенин Михаил Ушенин Webasyst 24 сентября 2021 15:49 #

                Эту возможность ещё не добавили.

                • +1
                  Дмитрий Муравьев Дмитрий Муравьев 23 августа 2022 10:35 #

                  Возможность прикреплять файлы не добавили и добавлять не собираются получается? Прошло  7 лет. А нельзя написать ответ, что данная возможность вообще не планируется добавляться в стандартный функционал и точка, чтобы людям было понятно? Очень конечно во многих смыслах не понятна логика разработчика фреймворка по поводу казалось бы очевидных минимальных функциях. Мда, деньги рулят.

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 23 августа 2022 14:52 #

                    Такой ответ написать нельзя, потому что он может быть неправдой, поскольку планы разработки время от времени изменяются в зависимости от текущих условий и потребностей пользователей.

                    Проголосуйте, пожалуйста, за такое предложение в специальном разделе форума поддержки. Или добавьте новое предложение на форуме, если его там ещё нет.

                    Если решение этой задачи вам нужно в ближайшее время, поищите подходящий программный продукт в магазине Webasyst или обратитесь за индивидуальной разработкой к нашим партнёрам.

                  • +2
                    Denis Lazarev Denis Lazarev 18 апреля 2017 17:20 #

                    Перейдите в wa-system\view\waViewHelper.class.php, в самом файле найдите функцию "sendEmail"(данная функция отвечает за форму обратной связи) и добавьте свои поля. После чего перейдите на сторону админа Webasyst->Сайт->Блоки->Выберите блок, который отвечает за отправку формы(по умолчанию блок имеет название "site.send_email_form") и измените или добавьте DOM-элементы.

                    Вуаля и все готово! ;)

                    • +1
                      Даниил Даниил 30 мая 2017 16:41 #

                      Denis, скажите пожалуйста где найти wa-system\view\waViewHelper.class.php ?

                      • +1

                        Этот файл нужно искать на сервере, где установлен Webasyst. Но после каждого обновления фреймворка Webasyst вам придётся вносить эти изменения заново. Учтите это.

                      • +1
                        Vitaliy pp Vitaliy pp 16 июля 2015 10:13 #

                        добрый день.

                        используется стандартная форма для обратной связи (немного изменили css-стили формы вот здесь), но при отправке формы выводится сообщение: Во время отправки произошла ошибка. Попробуйте позже. Cкриншот!

                        Почту пробовал разную, не помагает. На тестовом сервере (который на другом хостинге) тоже тестировал отправку на разные почты - все работает (даже если адрес почты не с домена сайта), код формы копировал туда из основного сайта.

                        В логах сайта и на хостинге тоже ничего не нахожу.

                        Подскажите, куда еще смотреть?


                        • +1

                          Возможно, ваш хостинг-провайдер не позволяет отправлять сообщения с адреса отправителя, указанного в настройках Инсталлера. Попробуйте создать файл wa-config/mail.php следующего содержания:

                          <?php
                          return array(
                              'default' => array(
                                  'type' => 'mail',
                                  'options' => ''
                              )
                          );


                        • +1
                          Елена Круглова Елена Круглова 28 октября 2015 14:04 #

                          Здравствуйте!

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

                          А когда клиент указывает свое имя и емейл, то мы вместо имени и емейла покупателя видим всегда один и тот же адрес отправителя- технический адрес хостинга.

                          Консультировались с админами хостинга- эту систему они не намерены изменять. Возможно ли как то включать имя и емейл клиента в тело письма, в начале, а то мы просто не можем иначе давать обратную связь - некуда.

                          То есть емейл мы еще можем выковырять из заголовков письма, а вот имя из кириллицы кодируется, и разобрать его не получается...

                          Спасибо!

                          • +1
                            Михаил Ушенин Михаил Ушенин Webasyst 29 октября 2015 03:47 #

                            1. В коде блока site.send_email_form замените строку

                            <div class="wa-form">

                            на

                            <div class="wa-form send-email-form">

                            2. В этом же блоке после блока

                            <style>
                            ...
                            </style>

                            добавьте

                            <script>
                            $(function() {
                                
                                $('.send-email-form').submit(function() {
                                    var form = $(this);
                                    var body = form.find('[name="body"]');
                                    body.val(
                                        form.find('[name="name"]').val() + "\n"
                                            + form.find('[name="email"]').val() + "\n\n"
                                            + body.val()
                                    );
                                });
                                
                            });
                            </script>

                            Этот JavaScript-код будет при попытке отправки сообщения копировать значения из полей "Имя" и "Email" в начало текста сообщения.

                          • +1
                            Подмастерье, Юра Подмастерье, Юра 13 января 2016 10:12 #

                            Помогите, нужно получить стандартную форму:

                            имя
                            компания
                            телефон
                            текст

                            прикрепить файл

                          • +1
                            Илья Илья 29 марта 2016 14:37 #

                            Здравствуйте!

                            Подскажите как менять адрес отправителя? Чтобы он брался не из поля Email, а был фиксированный, нужный мне.

                          • +1
                            wokster wokster 11 апреля 2016 11:46 #

                            пустая страница после отправки, отправка не происходит. Пробовал и smtp и обычную отправку - один результат. И капчу отключал.

                            • +1
                              Михаил Ушенин Михаил Ушенин Webasyst 12 апреля 2016 04:14 #

                              Установите приложение "Логи", включите в его настройках логирование ошибок PHP и повторите попытку отправки. Покажите, какие новые сообщения появляются в логах после этого.

                            • +1
                              Lesnik83 Lesnik83 13 апреля 2016 07:38 #

                              Хочу отключить captcha, но не получается. У меня стандартный код шаблона почему-то отличается от описанного Вами и выглядит он так:

                              {$errors = array()}

                              {if $wa->post("send") and $wa->sendEmail("", $errors)}

                              Куда мне надо вставить {$wa->storage(['captcha', $wa->app()], '')} что бы все заработало?


                            • +1
                              Romanson Romanson 9 июня 2016 15:02 #

                              А как добавить ещё поле? Допустим телефон?

                              • 0

                                Для этого потребуется дополнительное программирование. Задайте вопрос об этом в отдельной теме в хабе поддержки, пожалуйста, или поищите решение с помощью функции поиска.

                              • +2
                                Denis Lazarev Denis Lazarev 18 апреля 2017 17:22 #

                                Перейдите в wa-system\view\waViewHelper.class.php, в самом файле найдите функцию "sendEmail"(данная функция отвечает за форму обратной связи) и добавьте свои поля. После чего перейдите на сторону админа Webasyst->Сайт->Блоки->Выберите блок, который отвечает за отправку формы(по умолчанию блок имеет название "site.send_email_form") и измените или добавьте DOM-элементы.

                                Вуаля и все готово! ;)

                              • +1
                                Wowk Wowk 10 июня 2016 14:57 #

                                а как эту капчу можно поменять на капчу от google?

                                • 0
                                  Михаил Ушенин Михаил Ушенин Webasyst 15 августа 2016 11:36 #

                                  Для этого потребуется дополнительное программирование. Подробную поддержку по редактированию исходного кода программных продуктов вы также можете получить от экспертов Webasyst.

                                • +1
                                  Denis Lazarev Denis Lazarev 19 апреля 2017 11:08 #

                                  Для смены капчи не требуется "дополнительное программирование"! Вам стоит зайти на стороне админа "Webasyst" в Магазин->Витрина->Выбрать ваш домен сайта->Настройки->Общие настройки, далее найти пункт капча и выбрать необходимую для Вас("Капча Webasyst","Google reCAPTCHA")

                                  • +1
                                    novatra novatra 12 июля 2017 14:23 #

                                    Ничего подобного, SS не реагирует на сменю капчи по этому пути. Для регистрации меняет, а вот для формы обратной связи через {$wa->sendEmail(...)} ничего не меняется. Столько лет на рынке этот движок, а такие детские болячки... Стыдоба

                                    • +1
                                      Иван Иван 2 апреля 2020 15:31 #

                                      В 2020г., уже всё иначе. Капча гугла подтягивается.

                                    • +1
                                      Сергей Сыроежкин Сергей Сыроежкин 14 августа 2016 22:57 #

                                      в базу ничего не пишется что ли???

                                    • +1
                                      Viktoriia Shvets Viktoriia Shvets 26 сентября 2016 13:50 #

                                      Подскажите, пожалуйста. Письма бросаються в спам, что поменять нужно? Спасибо большое.

                                      • +1
                                        Minya Jam Minya Jam 9 октября 2016 00:42 #

                                        Проверьте наличие ip-адреса в СПАМ базах, например тут

                                        Проверьте MX записи DNS, а также остальные, тут коротко расписано

                                      • +1
                                        Юлия Юлия 12 января 2017 19:17 #

                                        Здравствуйте.

                                        Как в форму можно добавить дополнительные поля , например телефон, модель, серийный номер?

                                        • 0
                                          Михаил Ушенин Михаил Ушенин Webasyst 13 января 2017 09:24 #

                                          Есть несколько вариантов решения: дорогие либо сложные.

                                          Дорогой: использовать для формирования форм обратной связи приложение "Поддержка": https://support.webasyst.ru/3478/request-form-create-and-publish/

                                          Сложный: написать (или заказать) JavaScript-код, который будет копировать содержимое дополнительных полей в поле "Текст сообщения" и после этого отправлять сообщение обычным образом.

                                        • +1
                                          alesh alesh 23 февраля 2017 15:06 #

                                          Как сделать, что бы отправителем указывался e-mail клиента, а не тот что прописан в инсталлере?

                                          • +1
                                            Михаил Ушенин Михаил Ушенин Webasyst 27 февраля 2017 15:40 #

                                            Ваш веб- или почтовый сервер может не позволить использовать произвольные адреса отправителей для сообщений, отправляемых с вашего домена. Обычно так не стоит делать.

                                          • +1
                                            Анна Малютина Анна Малютина 23 февраля 2017 16:39 #

                                            можно ли встроить форму не на страницу магазина, а в какую-либо категорию в товарах? html не встраивается... не положено или неправильно делаю что?

                                            • +1
                                              Михаил Ушенин Михаил Ушенин Webasyst 27 февраля 2017 15:42 #

                                              Для того чтобы код Smarty срабатывал в HTML-описаниях категорий или товаров, нужно создать конфигурационный файл wa-config/apps/shop/config.php:

                                              <?php
                                              
                                              return array(
                                                  'can_use_smarty' => true,
                                              );
                                              

                                              и очистить кеш в Инсталлере.

                                            • +1
                                              Игорь Коновалов Игорь Коновалов 16 апреля 2017 17:59 #

                                              Приветствую!

                                              В бэкенде сайта сделано 2 блока с почти одинаковым кодом, оба шорт-кода вставлены на 1 станице, при заполнении одной формы, отправляется 2 одинаковых письма на почту.

                                              Подскажите пожалуйста, как правильно сделать 2 формы на одной странице?

                                            • +1
                                              Игорь Коновалов Игорь Коновалов 17 апреля 2017 06:14 #

                                              Для уточнения прикрепляю скрин. Два блока контактной формы callback и site.send_email_form.

                                            • +1
                                              Yusup Vladimirovich Maksudov Yusup Vladimirovich Maksudov 11 марта 2020 14:07 #

                                              Все сделал как написано. Но не работает.

                                              1 раз вставил в HTML просто код. В итоге:

                                              2 попытка вставил весь код и вот что вышло. 

                                              Почему не работает? что нужно сделать??

                                            • +1

                                              Было бы очень хорошо и правильно запретить отправку сообщений с HTML-тегами через форму обратной связи site.send_email_form  
                                              Или расскажите клиентам как добавить такой запрет в код формы.
                                              По крайней мере запретить отправку сообщений с </a>, http:// и https:// в теле сообщения.
                                              Боты стали пробивать капчу и слать спам через обратную связь.

                                              • +1

                                                Пожелания по доработке программных продуктов публикуйте, пожалуйста, в специальном разделе форума поддержки. Так их удобнее регистрировать и обсуждать, если потребуется. Или голосуйте за уже опубликованные предложения других пользователей.

                                                • +1

                                                  Честно говоря публиковал тут, а не в разделе с пожеланиями т.к. думал, что просто добавите в этой же статье, в "несколько хитростей" еще один блок "Как убрать в форме возможность оставить комментарий с HTML-тегами" (по аналогии с "Как убрать поле для ввода защитного кода").
                                                  А не будете делать доработку.

                                                  • +1
                                                    Михаил Ушенин Михаил Ушенин Webasyst 3 августа 2021 07:55 #

                                                    Поскольку проблема вызвана действиями ботов, проверку или фильтрацию надо выполнять на стороне сервера. А в коде блока site.send_email_form, кажется, нет таких средств — нужно изменять логику работы PHP-кода.

                                                  • +1
                                                    Syrbek.RU Syrbek.RU 10 марта 2023 11:46 #

                                                    Добрый день, всем. Все работает. Но тут к сожалению ограниченные возможности формы. Изучил обработчик wa-system/view/waViewHelper.class.php

                                                    Возможно ли расширить функционал, Например: 

                                                    - добавить другие свои поля для разного типа
                                                    - при успешной отправке данные записывать в таблицу (для дальнейшего отчета)

                                                    Понимаю что изменение системного файла  нельзя так как при обновлении все сотрется. возможно ли для таких целей написать плагин например? Или в блоке site.send_email_form можно свой Php код добавить синтаксисом в smarty?

                                                    Добавить комментарий

                                                    Чтобы добавить комментарий, зарегистрируйтесь или войдите