Как добавить форму обратной связи на витрину 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>


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

  • +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 года назад писали что сообщите разработчикам. Сайт в облаке.

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

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

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

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

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

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

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

                        • +2
                          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
                            Юлия Юлия 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
                                  Виктор Бадьин Виктор Бадьин 9 февраля 2018 21:22 #

                                  Здравствуйте, форма не отправляет сообщения

                                  логи пишут

                                  [09-Feb-2018 20:17:42 Africa/Johannesburg] PHP Warning: Missing argument 1 for waViewHelper::get(), called in /home/automall/public_html/wa-cache/apps/shop/templates/compiled/shop_ru_RU/80/be/1b/80be1b24f3ef429872fb34e93a16332490af4be7.file.plugin.smartfilters.html.php on line 71 and defined in /home/automall/public_html/wa-system/view/waViewHelper.class.php on line 381

                                  [09-Feb-2018 20:17:42 Africa/Johannesburg] PHP Notice: Undefined variable: name in /home/automall/public_html/wa-system/view/waViewHelper.class.php on line 383


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

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