Быстрый заказ — это функция, способная значительно облегчить процесс шопинга в интернет-магазине и, как следствие, повысить конверсию. Под конверсией сайта понимается соотношение количества завершенных заказов к общему числу посетителей.
Данная статья рассматривает основные принципы организации быстрого заказа товаров без обязательной регистрации. Материал служит наглядным экскурсом для владельцев сайтов и заказчиков веб-услуг, демонстрируя работу подобных модулей. Кроме того, благодаря пошаговому разбору функционального кода, статья может быть полезна веб-разработчикам для практического применения.
Почему важен быстрый заказ?
Известная маркетинговая закономерность гласит: чем меньше полей в форме, тем охотнее пользователи её заполняют и тем выше вероятность совершения покупки. Неудивительно, что популярность набирает практика внедрения формы быстрого заказа. В такой форме посетитель указывает только необходимый минимум данных для доставки (имя, адрес, телефон), минуя необходимость ввода email, пароля, почтового индекса (где он не требуется) и другой информации.
Однако важно учитывать географический фактор. Рационально предлагать форму быстрого заказа преимущественно жителям города, где расположен магазин или склад (например, Москва). Для покупателей из других регионов следует оставить стандартную процедуру полной регистрации, где они смогут указать почтовый индекс, выбрать способ доставки и другую необходимую информацию.
Принципы организации быстрого заказа без регистрации
Определив цели, перейдем к средствам реализации. Форма быстрого заказа, рассматриваемая в статье, была написана для интернет-магазина на движке osCommerce v.2.3, однако аналогичный скрипт можно адаптировать под любую CMS.
Основная идея: для отправки заказа продавцу на email необходим ID товара, который извлекается со страницы размещения кнопки «Быстрый заказ» (страница товара или категории).
Логика работы:
- Пользователь нажимает кнопку «Быстрый заказ», которая открывает всплывающее (модальное) окно.
- В окне пользователю предлагается подтвердить свое местоположение:
- «Да, я из Москвы» – переход к форме заказа.
- «Нет, я НЕ из Москвы» – появляется сообщение с извинениями и кнопка «Зарегистрироваться» для перехода к полной регистрации на сайте.
- При подтверждении местоположения пользователь заполняет короткую форму: указывает имя, адрес в Москве и контактный телефон. По желанию можно добавить комментарий.
- После нажатия кнопки «Заказать»/«Купить» скрипт формирует письмо с данными заказа (включая скрытый ID товара) и отправляет его на email администратора (менеджера по продажам). Менеджер может перезвонить для уточнения деталей.
- Покупателю отображается сообщение: «Заказ успешно отправлен».
Описание интерфейса (текстовое)
- Шаг 1: Кнопка «Быстрый заказ» расположена на странице товара. Её нажатие открывает модальное окно.
- Шаг 2 (Проверка локации): В модальном окне пользователь выбирает вариант: «Да, я из Москвы» или «Нет, я НЕ из Москве». При выборе отрицательного ответа отображается информация о необходимости полной регистрации для жителей других городов.
- Шаг 3 (Форма заказа): После подтверждения нахождения в Москве пользователь видит форму с полями: имя, телефон, адрес в Москве, комментарий.
Скрипт быстрого заказа для интернет-магазина
Рассмотрим ключевые элементы кода для данной реализации.
Структура файлов
| Файл/Компонент | Назначение |
|---|---|
bistriy_zakaz_s_sayta.php | Основной PHP-файл, который вызывается в модальное окно. Содержит логику обработки и отображения формы. |
| Вспомогательные функции | Функции проверки полей и защиты от повторных отправок (например, лимит времени между заказами) могут быть заимствованы из существующего модуля обратной связи движка. |
| Стили (CSS) и скрипты (JavaScript) | Для оформления и интерактивности модального окна. |
Логика обработки данных (PHP)
Основной скрипт начинается с подключения необходимых файлов движка. Далее проверяется, были ли отправлены данные формы.
// Определяем, получены ли данные с формы?
// Если да, производим их обработку и формируем данные для письма:
if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'send') && isset($HTTP_POST_VARS['formid']) && isset($HTTP_POST_VARS['products_id']) && ($HTTP_POST_VARS['formid'] == $sessiontoken)) {
$error = false;
$name = tep_db_prepare_input($HTTP_POST_VARS['name']);
$phone_num = tep_db_prepare_input($HTTP_POST_VARS['phone']);
$adress_moscow = tep_db_prepare_input($HTTP_POST_VARS['adress_moscow']);
$prod_link = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . tep_db_prepare_input($HTTP_POST_VARS['products_id']));
$enquiry = iconv('cp1251','utf-8','Получен заказ на товар: '). '
' . $prod_link . '
'.iconv('cp1251','utf-8','Контактное лицо (имя): ') . $name . '
'.iconv('cp1251','utf-8','Телефон: ') . $phone_num . '
'. iconv('cp1251','utf-8','Адрес в Москве: ') . $adress_moscow .'
'. iconv('cp1251','utf-8','Сообщение: ') . tep_db_prepare_input($HTTP_POST_VARS['enquiry']);
// Проверка на частоту отправок (например, не чаще чем раз в 5 минут)
$actionRecorder = new actionRecorder('ar_contact_us', (tep_session_is_registered('customer_id') ? $customer_id : null), $name);
if (!$actionRecorder->canPerform()) {
$error = true;
$actionRecorder->record(false);
$messageStack->add('contact', sprintf(ERROR_ACTION_RECORDER, (defined('MODULE_ACTION_RECORDER_CONTACT_US_EMAIL_MINUTES') ? (int)MODULE_ACTION_RECORDER_CONTACT_US_EMAIL_MINUTES : 5)));
}
// Запрос к базе данных по ID товара
$product_info_query = tep_db_query("select p.products_id, p.products_model, p.products_image, p.products_price, p.products_tax_class_id, pd.products_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$HTTP_POST_VARS['products_id'] . "' and p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");
if ($error == false) {
// Если ошибок нет, отправляем письмо
tep_mail(STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, iconv('cp1251','utf-8','Быстрый заказ с интернет-магазина'), $enquiry, $name, STORE_OWNER_EMAIL_ADDRESS);
$actionRecorder->record();
// Устанавливаем сессию 'moscow', чтобы при следующем заказе не спрашивать о локации
session_start();
$_SESSION['moscow'] = '1';
// Перенаправляем на страницу с сообщением об успехе
tep_redirect(tep_href_link('bistriy_zakaz_s_sayta.php', 'action=success'));
}
}
// Завершение условия о полученных данных формы. Если форма не отправлялась, скрипт выполняет запрос к базе данных для получения информации о товаре (название, цена, изображение) на основе переданного в URL products_id. Также обрабатывается случай, если товар участвует в акции (специальная цена).
Формирование интерфейса (HTML/CSS/JS)
В шапке страницы подключаются основные стили сайта, JavaScript-библиотеки (например, jQuery) и скрипты.
Ключевой элемент интерфейса — два блока для проверки локации:
- Блок #moscow: Запрос: «Вы из Москвы?». Позиционируется абсолютно и имеет высокий
z-index, чтобы перекрыть основную форму. - Блок #moscownot: Сообщение для пользователей не из Москвы. Изначально скрыт.
Логика на JavaScript:
- При нажатии «Да, я из Москвы» (
#tdb1), блок#moscowскрывается (hide()), открывая форму заказа. - При нажатии «Нет, я НЕ в Москве» (
#tdb2), блок#moscowскрывается, а блок#moscownotпоказывается (show()), предлагая пройти регистрацию.
Важно: блоки проверки локации выводятся только если заказ еще не отправлен и в сессии не установлена переменная $_SESSION['moscow'] (что означает, что пользователь уже подтверждал свой город ранее).
Ссылка «Зарегистрироваться» должна иметь атрибут target="_top", так как скрипт работает внутри фрейма модального окна.
Отображение результата
Скрипт проверяет, было ли успешное выполнение заказа (параметр action=success в URL). Если да, выводится благодарственное сообщение. В противном случае отображается форма для заполнения.
Пример HTML-структуры формы:
<form name="quick_order" action="bistriy_zakaz_s_sayta.php?action=send" method="post">
<input type="hidden" name="formid" value="<?php echo $sessiontoken; ?>" />
<input type="hidden" name="products_id" value="<?php echo $product_info['products_id']; ?>" />
<label>Ваше имя:</label>
<input type="text" name="name" required />
<label>Ваш телефон:</label>
<input type="tel" name="phone" required />
<label>Адрес в Москве:</label>
<input type="text" name="adress_moscow" required />
<label>Сообщение:</label>
<textarea name="enquiry"></textarea>
<button type="submit">Заказать</button>
</form> Интеграция кнопки быстрого заказа на сайте
Чтобы функция заработала, необходимо добавить кнопку на страницы товара и, возможно, категорий.
На странице товара рядом с кнопкой «Добавить в корзину» создается кнопка «Быстрый заказ». Её ссылка имеет вид:https://[ваш-сайт]/bistriy_zakaz_s_sayta.php?products_id=[ID_товара]
Эта ссылка должна открываться в модальном окне (например, с помощью библиотеки FancyBox) внутри iframe.
Пример кода для страницы товара:
<a href="/bistriy_zakaz_s_sayta.php?products_id=<?php echo $product_id; ?>" class="fancybox-iframe" id="quick-order-btn">
Быстрый заказ
</a> Реализация функции быстрого заказа требует внимания как к пользовательскому интерфейсу (минимизация шагов для целевой аудитории), так и к технической части (корректная обработка данных, интеграция с движком). Предложенный подход позволяет гибко разделить поток покупателей из разных регионов, упрощая процесс для локальных клиентов и повышая общую конверсию интернет-магазина.

