1С-Битрикс: инструкция по подключению модуля Улучшенный выбор местоположений | |||||||||||||||||||||||||||||||||||||||||||||||||||
Предупреждение!!!
1. В магазине должен быть установлен модуль доставки edost.delivery с оплаченным доступом.
2. В магазине должны быть установлены местоположения стандарта eDost из папки "для модуля Улучшенный выбор местоположений".
3. В настройках страницы оформления заказа должна стоять галочка "Режим совместимости для предыдущего шаблона".
4. Модуль совместим только со стандартным компонентом оформления заказа (sale.order.ajax).
5. Если у вас нет опыта в программировании, тогда не рекомендуем самостоятельно интегрировать модуль (иначе можно случайно вывести из строя весь магазин!). Все необходимые исправления могут внести наши специалисты (просто подайте заявку на info@edost.ru).
Модуль приобретается через Marketplace
При оплате за сервис eDost более 2000 руб. модуль предоставляется БЕСПЛАТНО!
а) админка магазина > Marketplace > Обновление решений > Закладка "Активация купона":
Введите купон и кликните по кнопке Активировать купон.
б) админка магазина > Marketplace > Обновление решений > Закладка "Список обновлений":
Выделите модуль Улучшенный выбор местоположений и кликните по кнопке Загрузить.
в) админка магазина > Marketplace > Установленные решения:
Нажмите на модуле Улучшенный выбор местоположений правую кнопку мышки и выберите Установить.
В шапку сайта (или любое другое место) можно добавить вывод местоположения покупателя (при первом входе на сайт местоположение определяется по IP).
Интеграция блока в шапку сайта:
bitrix/templates/шаблон магазина/header.php
Предупреждение!!!
1. Перед редактированием рекомендуется сделать бэкап оригинального файла магазина, чтобы при необходимости можно было все восстановить. 2. Модифицированный файл может быть заменен новой версией при обновлении шаблона/магазина, тогда все правки сбросятся! Вставьте в файл код, выделенный зеленым:
...
... </span> <?$APPLICATION->ShowProperty("CATALOG_COMPARE_LIST", "");?> <style> /* обрезка длинных названий местоположений */ #edost_location_header_city { display: inline-block; max-width: 200px; font-size: 13px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } </style> <div style="margin: 0 12px 0 0;"> <? // город в шапке сайта if (CModule::IncludeModule('edost.locations')) $GLOBALS['APPLICATION']->IncludeComponent('edost:locations', '', array('MODE' => 'header' /* , 'PARAM' => array('loading' => 'loading_small_f2.gif') */ ), null, array('HIDE_ICONS' => 'Y')); ?> </div> </div> <div class="brand"> ... ...
Cтарый шаблон - это стандартный шаблон оформления заказа, используемый в битрикс до версии 16 (в новых версиях битрикс старый шаблон также нормально функционирует).
Если у вас в магазине установлен шаблон eDost или штатный шаблон Битрикс, тогда проводить интеграцию НЕ нужно.
Отредактируйте шаблон доставки:
bitrix/templates/шаблон магазина/components/bitrix/sale.order.ajax/шаблон компоненты/delivery.php
Предупреждение!!!
1. Перед редактрованием рекомендуется сделать бэкап оригинального файла магазина, чтобы при необходимости можно было все восстановить. 2. Если в шаблоне нет папки sale.order.ajax, тогда необходимо копировать файлы в базовый шаблон компоненты: bitrix/components/bitrix/sale.order.ajax/templates/.default/
Базовый шаблон может быть заменен новой версией при обновлении магазина!
Чтобы этого избежать, рекомендуется создать на основе базового шаблона новый, а уже его редактировать и использовать в магазине.
В начале сразу после строчки "<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>", добавьте:
<? /* ==================== edost.locations (выбор местоположений) */ ?>
<? if (!empty($arResult['edost']['locations_installed'])) { ?> <style> div.edost_main { font-family: arial; line-height: normal; margin: 0 0 40px 0; } div.edost_main h4 { border-bottom: 1px solid #DCDFE2; display: block; margin-bottom: 10px; padding-bottom: 5px; } div.edost_warning { color: #F00; } div.edost_warning_big { font-size: 14px; font-weight: bold; } /* перебивание глобальных стилей шаблона Visual */ /* #edost_location_city_div input.edost_city { width: 100% !important; max-width: 600px !important; } #edost_location_city_div input.edost_city, #edost_location_city_zip_div input.edost_input, #edost_location_city_div input.edost_input, #edost_location_address_div input.edost_input { height: 25px !important; padding: 2px 4px !important; vertical-align: baseline; } */ </style> <div class="edost_main"> <h4 class="edost_location_head">Местоположение доставки</h4> <? $delivery_id = $arResult['USER_VALS']['DELIVERY_ID']; $warning = (!empty($arResult['edost']['format']['warning']) || isset($arResult['edost']['warning']) ? true : false); $address_shop = 'N'; // если указано любое значение отличное от 'N', тогда поле для ввода адреса отключается и в заказе сохраняется указанный адрес $address_hide = (!empty($arResult['edost']['address_hide']) || $delivery_id == '' ? true : false); // генерируется при активном тарифе с доставкой до пункта выдачи модуля edost.delivery (НЕ менять!!!) /* // собственные тарифы "Самовывоз" магазина, для которых требуется отключение ввода адреса и замена адреса на заданное значение $address_tariff = array( 'edost:61' => 'магазин: ул. Кутузовская, д. 20, телефон: +7-123-456-78-90', ); if (isset($address_tariff[$delivery_id])) { $address_hide = true; $address_shop = $address_tariff[$delivery_id]; } */ $edost_locations_param = array( 'ID' => $arResult['USER_VALS']['DELIVERY_LOCATION'], 'DELIVERY_ID' => $delivery_id, 'PROP' => $arResult['edost']['order_prop'], 'PROP2' => $arResult['edost']['order_prop2'], 'PARAM' => array( 'input' => (!empty($arResult['edost']['location_input']) ? $arResult['edost']['location_input'] : 0), // ID местоположения с которого включится режим выбора (если не задано или равно "0", тогда модуль работает в автоматическом режиме) 'zip_in_city' => (isset($arResult['edost']['order_prop']['ZIP']) && ($arResult['edost']['order_prop']['ZIP']['value'] === '' || $warning && $address_hide) ? true : false), // true - выводить индекс в блоке с местоположением 'address' => $address_shop, // присвоить собственный адрес самовывоза ('N' - стандартная работа) // 'loading' => 'loading_small_f2.gif', // иконка загрузки при расчете доставки и проверке индекса - лежит в папке bitrix/components/edost/locations/images/ /* // предупреждения (если указаны, тогда заменяют значения по умолчанию) 'zip_warning' => array( 1 => 'Такого индекса НЕ существует!', 2 => 'Индекс НЕ соответствует региону!', 'digit' => 'Должны быть только цифры!', ), */ // модификация полей адреса (если указаны, тогда заменяют значения по умолчанию) 'address_field' => array( /* 'city2' => array( 'name' => 'Населенный пункт', // название поля 'width' => 200, // длина поля в пикселях 'max' => 50, // допустимое количество символов 'enter' => true, // true - добавить перед полем 'ввод' ), 'street' => array( 'delimiter' => true, // установить после поля разделитель 'delimiter_style' => 'width: 20px', // собственный стиль для разделителя ), // 'house_1', 'house_2', 'house_3', 'house_4', 'door_1', 'door_2' */ // ограничения по выводу полей 'city2_required' => array( // 'value' => 'Y', // '' - не обязательно, 'Y' - обязательно (по умолчанию) ), 'street_required' => array( // 'value' => '', // '' - не обязательно, 'Y' - обязательно, 'A' - работа с модулем edost.delivery с обязательным выбором улицы из списка подсказок для городов с отдаленными районами (по умолчанию) ), 'zip_required' => array( // 'value' => (in_array($delivery_id, array(10, 20)) ? 'Y' : ''), // '' - поле не выводится, 'S' - поле выводится, 'Y' - должно быть обязательно заполнено, 'A' - работа с модулем edost.delivery (по умолчанию) ), 'metro_required' => array( // 'value' => (in_array($delivery_id, array(10, 20)) ? 'S' : ''), // '' - поле не выводится, 'S' - поле выводится, 'A' - работа с модулем edost.delivery (по умолчанию) ), 'passport_required' => array( // 'value' => (in_array($delivery_id, array(10, 20)) ? 'Y' : ''), // '' - поле не выводится, 'Y' - должно быть обязательно заполнено, 'A' - работа с модулем edost.delivery (по умолчанию) ), ), ), ); ?> <? $GLOBALS['APPLICATION']->IncludeComponent('edost:locations', '', array('MODE' => 'city') + $edost_locations_param, null, array('HIDE_ICONS' => 'Y')); ?> </div> <? } ?> <? /* ==================== edost.locations */ ?>
В конце после самой последней строчки шаблона, добавьте:
<?
/* ==================== edost.locations (ввод адреса) */ if (!empty($arResult['edost']['locations_installed']) && isset($arResult['edost']['order_prop']['ADDRESS'])) { ?> <div class="edost_main"<?=($address_hide ? ' style="display: none;"' : '')?>> <h4 id="edost_location_address_head" class="edost_location_head"<?=($address_hide ? ' style="display: none;"' : '')?>>Адрес доставки</h4> <? $GLOBALS['APPLICATION']->IncludeComponent('edost:locations', '', array('MODE' => 'address') + $edost_locations_param, null, array('HIDE_ICONS' => 'Y')); ?> </div> <? } /* ==================== edost.locations */ ?> <? /* ==================== edost.locations (паспортные данные) */ if (!empty($arResult['edost']['locations_installed']) && isset($arResult['edost']['order_prop']['PASSPORT'])) { ?> <div id="edost_location_passport_div_main" class="edost_main edost_template_div"> <h4 id="edost_location_passpot_head" class="edost_location_head">Паспортные данные получателя</h4> <? $GLOBALS['APPLICATION']->IncludeComponent('edost:locations', '', array('MODE' => 'passport') + $edost_locations_param, null, array('HIDE_ICONS' => 'Y')); ?> <div style="color: #800; padding-top: 8px;">Пожалуйста, будьте внимательны при заполнении паспортных данных.<br>Служба доставки выдаст груз только получателю с указанным паспортом!</div> </div> <? } /* ==================== edost.locations */ ?>
Модуль местоположений рассчитан на работу только с конкретными свойствами заказа,
поэтому необходимо настроить существующие свойства в соответствии с требованиями модуля (или создать новые,
если таких свойств еще нет).
Также у всех полей в настройках должна стоять галочка Входит в профиль, выбрана одна и та же Группа свойств, и в закладке Привязка свойства не выбрано ни одной платежной системы и службы доставки.
Предупреждение!!!
В свойствах может быть несколько одинаковых полей для разных типов плательщиков - настроить необходимо все поля.
С помощью служебных команд можно настроить модуль на нестандартную обработку тарифов.
Команды необходимо добавлять в описание тарифов доставки для которых требуется нестандартная обработка. При выводе описания доставки на странице оформления заказа служебные команды автоматически удаляются, поэтому покупатели увидят только стандартный текст.
Например, для тарифа "Самовывоз" требуется отключить запрос адреса и заменить его своим значением - для этого в админке магазина в настройках модуля доставки у тарифа/профиля в поле "Описание"
необходимо добавить текст [address=здесь указывается адрес самовывоза]
Пример описания тарифа:
Самовывоз из магазина[address=адрес магазина: ул. Ленина, д. 10, 2-й этаж, вывеска "Мой магазин"]
В результате, если покупатель при оформлении заказа выберет данный тариф, он увидит описание Самовывоз из магазина, а в заказе сохранится адрес магазина: ул. Ленина, д. 10, 2-й этаж, вывеска "Мой магазин". Служебные команды:
| |||||||||||||||||||||||||||||||||||||||||||||||||||
info@edost.ru © ООО "Айсден", 2006-2021. Все права защищены. |