Кейс №5. Быстрый заказ 2.0
О чем здесь?
Быстрый заказ - это способ взять контакт потенциального покупателя с помощью почтовой формы. В этой форме передается наименование товара и номер телефона, который вводит пользователь. Если вы не знакомы с этим понятием, посмотрите заметку про быстрый заказ.
2.0 означает обновленный подход к размещению формы и новые возможности для передачи данных.
Почему 2.0?
Вот проблемы, с которыми мы сталкивались при реализации быстрого заказа:
- Объем данных о товаре был недостаточным. Требовалось передать не только название товара, но и ссылку, цену на него, а также выбранную опцию (
$OPTIONS$
) - Не было возможности разместить несколько форм быстрого заказа на одной странице
- Не был рассмотрен вопрос размещения почтовой формы во всплывающем окне
Новая реализация
Давайте создадим форму, которая передаст нам Название, ссылку и цену товара:
Откройте конструктор полей формы и добавьте поле для этих данных (я выбрал существующее поле "Текст сообщения *" textarea
под номером 3), а также для номера телефона покупателя:
Теперь необходимо изменить шаблон формы:
<input type="hidden" value="emailotpravitelya@yourdomen.com" name="f1" /> <input type="hidden" value="Быстрый заказ с сайта" name="f2" /> <input type="hidden" value="" name="f3" class="product-info"/> <input type="text" name="f4" placeholder="Номер телефона" /> <input type="submit" value="Заказать" />
А вот скрипт для заполнения этой формы придется вынести в шаблон страницы товара. Вот он:
$(".product-info").val("Наименование: $ENTRY_TITLE$ \nЦена: $PRICE_RAW$ у.е.\nСсылка: "+location.href);
Итого для шаблона страницы товара получается:
$MFORM_7$ <script type="text/javascript"> $(".product-info").val("Наименование: $ENTRY_TITLE$ \nЦена: $PRICE_RAW$ у.е.\nСсылка: "+location.href); </script>
$MFORM_7$
- это пример, вы, конечно, должны заменить его на свой.
Также, стоит иметь ввиду, что скрипт вызовет ошибку, если в $ENTRY_TITLE$
будут присутствовать запрещенные символы. Можно отказать от передачи названия товара или заменить его на document.title
, но не всем это подойдет.
Отправка $OPTIONS$
Для тех, кому нужно передать в быстром заказе опцию потребуется внести изменения в скрипт:
$(document).ready(function(){ var name = "$ENTRY_TITLE$", price = $PRICE_RAW$, optionName = "", optionChName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName = ""; optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); $(".shop-options-c").change(function(){ optionChName = ""; $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+" "+optionChName+"\nСсылка: "+location.href); }); $(".shop-options-s").change(function(){ optionName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); }); });
Также здесь заменен $ENTRY_TITLE$
на document.title
в локальной переменной name
. Вы можете этого не делать. Итого в шаблоне страницы товара получаем:
$MFORM_7$ <script type="text/javascript"> $(document).ready(function(){ var name = "$ENTRY_TITLE$", price = $PRICE_RAW$, optionName = "", optionChName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName = ""; optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); $(".shop-options-c").change(function(){ optionChName = ""; $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+" "+optionChName+"\nСсылка: "+location.href); }); $(".shop-options-s").change(function(){ optionName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); }); }); </script>
Стоит отметить, что отправка опций в почтовой форме будет работать с нашим скриптом по их кастомизации.
Вот пример того, как быстрый заказ может использовать вместе с опциями:
Но у этой формы нет поля для ввода номера телефона. Да. Она размещена во всплывающем окне.
Форма во всплывающем окне
Давайте разместим кнопку в шаблоне страницы товара при нажатии на которую будет вызываться всплывающее окно с формой быстрой заказа:
<a href="#" onclick="$.fancybox('#fast-order-message');return false">Быстрый заказ</a>
Теперь спрячем нашу форму и обернем ее в контейнер с id="fast-order-message"
. Это лучше сделать в самой нижней части страницы, перед закрывающим тегом body
:
<div id="fast-order-message" style="display:none;">$MFORM_7$</div> <script type="text/javascript"> $(document).ready(function(){ var name = "$ENTRY_TITLE$", price = $PRICE_RAW$, optionName = "", optionChName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName = ""; optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); $(".shop-options-c").change(function(){ optionChName = ""; $(".shop-options-c").each(function(){ if($(".shop-options-c").attr("checked")){ optionChName += $(this).parent().prev().text() } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+" "+optionChName+"\nСсылка: "+location.href); }); $(".shop-options-s").change(function(){ optionName = ""; $(".shop-options-s").each(function(){ if($(this).val().length>0) { optionName += " "+$(this).children("option[value='"+$(this).val()+"']").text(); } }); $(".product-info").val("Товар: "+name+"\nЦена: "+price+"у.е.\nОпция: "+optionName+"\nСсылка: "+location.href); }); }); </script>
Проверяем:
Все работает и отправляется.
Несколько форм на странице
Часто возникает необходимость разместить две формы быстрого заказа на одной странице товара.
Если вы используете всплывающее окно для размещения формы, то проблем с этим нет. Количество кнопок для вызова окна с формой не ограничено.
Но чтобы поместить быстрый заказ с полем для ввода телефона в нескольких местах, потребуется создать несколько почтовых форм. Их шаблон будет одинаков, но в шаблоне товара каждая из почтовых форм должна размещаться не более одного раза.
На этом все. Отдельную благодарность выражаю активным читателям, которые задают интересные вопросы и заставляют думать. Чтобы предложить свою идею, опишите ее в комментариях.
Статьи по теме
- 6 распространенных ошибок из аудитов за 2014 год
- Быстрый заказ в интернет магазине - почтовая форма uCoz
- Кейс №2. Всплывающее уведомление после добавления товара в корзину
- Меню для uCoz - 5 советов по оптимизации
- Яндекс.Метрика в интернет магазине uCoz
Обсуждение
Всего комментариев: 13
А вот с опциями сложнее, придется скрипт полностью переписывать.