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

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

  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>


40 комментариев

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

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

    • +1

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

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

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

      • +1

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

      • +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

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

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

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

              • +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 #

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

                  • +1

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

                  • +1
                    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?

                    • +1
                      Михаил Ушенин Михаил Ушенин 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
                        Сергей Сыроежкин Сергей Сыроежкин 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
                          Влад Влад 2 ноября 2016 11:46 #


                          Здравствуйте. как то странно куда бы не вставлял код, нигде не работает(((
                          <div>
                          {$wa->block("site.send_email_form")}
                          </div>

                          месяца 3 назад делал обратную связь страничку там включилась.. теперь никуда не могу добавить(




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

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

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

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

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

                            Дорогой: использовать для формирования форм обратной связи приложение "Поддержка": https://www.webasyst.ru/crm/support/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.

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

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