1С-Битрикс: инструкция по подключению модуля Улучшенный выбор местоположений
модуль заменяет стандартный выбор местоположений bitrix на странице оформления заказа
и на странице создания/редактирования отгрузки в админке
Предупреждение!!!
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 или новый многошаговый шаблон битрикс 16-17, тогда проводить интеграцию НЕ нужно.
Предупреждение!!!
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 */
?>
Модуль местоположений рассчитан на работу только с конкретными свойствами заказа, поэтому необходимо настроить существующие свойства в соответствии с требованиями модуля (или создать новые, если таких свойств еще нет).

Название Мнемонический код Тип Дополнительно
Местоположение LOCATION Местоположение
[LOCATION]
1. Стоит галочка "Использовать как местоположение"
2. В выпадающем списке "Альтернативное поле ввода местоположения" установить самое первое "Выбрать" (именно "Выбрать", а не одно из существующих полей).
3. Если требуется определение местоположений по IP, тогда "Значение по умолчанию" должно быть НЕ задано
Адрес доставки ADDRESS Строка
[STRING]
1. Отчистить "Значение по умолчанию" (должна быть пустая ячейка)
2. Нет галочки "Обязательное"
3. Нет галочки "Много строк"
3. Есть галочка "Является адресом"
НЕ обязательные поля (создавать только по желанию/необходимости)
Индекс ZIP Строка
[STRING]
1. Отчистить "Значение по умолчанию" (должна быть пустая ячейка)
2. Стоит галочка "Использовать как почтовый индекс"

Поле для ввода индекса запрашиваются только при выборе тарифов почты, EMS и boxberry (для всех остальных тарифов в заказе сохраняется индекс, отпределенный примерно). Если у вас нет доставки через эти компании, тогда поле для индекса можно не создавать.
Индекс определен приблизительно (используется только для предварительного расчета доставки) ZIP_AUTO Да/Нет
[Y/N]
1. Нет галочки "Значение по умолчанию"

Если поле не создано, тогда у приблизительно определенных индексов в конце будет подписываться '.' (точка).
Населенный пункт CITY Строка
[STRING]
1. Отчистить "Значение по умолчанию" (должна быть пустая ячейка)
2. Нет галочки "Обязательное"

Данное поле используется для хранения названий населенных пунктов, отсутствующих в базе местоположений магазина.
Если поле не создано, тогда название населенного пункта будет добавляться в конец поля ADDRESS (разделитель ';').

Если у вас поле CITY уже использовалось до установки модуля местоположений, тогда обязательно отключите это поле и создайте новое, иначе у старых пользователей название города будет выводиться НЕ корректно!!!
Станция метро METRO Строка
[STRING]
1. Отчистить "Значение по умолчанию" (должна быть пустая ячейка)
2. Нет галочки "Обязательное"

Если поле не создано, тогда название станции метро будет добавляться в начало поля ADDRESS.
Паспорт PASSPORT Строка
[STRING]
1. Отчистить "Значение по умолчанию" (должна быть пустая ячейка)
2. Нет галочки "Обязательное"

Поля для ввода паспортных данных запрашиваются только при выборе транспортных компаний (ЖелДор, ПЭК и т.д.). Если необходимо вывести эти поля для других тарифов, тогда можно использовать служебные команды.

Также у всех полей в настройках должна стоять галочка Входит в профиль, выбрана одна и та же Группа свойств, и в закладке Привязка свойства не выбрано ни одной платежной системы и службы доставки.
Предупреждение!!!
В свойствах может быть несколько одинаковых полей для разных типов плательщиков - настроить необходимо все поля.
С помощью служебных команд можно настроить модуль на нестандартную обработку тарифов.

Команды необходимо добавлять в описание тарифов доставки для которых требуется нестандартная обработка.

При выводе описания доставки на странице оформления заказа служебные команды автоматически удаляются, поэтому покупатели увидят только стандартный текст.
Например, для тарифа "Самовывоз" требуется отключить запрос адреса и заменить его своим значением - для этого в админке магазина в настройках модуля доставки у тарифа/профиля в поле "Описание" необходимо добавить текст [address=здесь указывается адрес самовывоза]

Пример описания тарифа:
Самовывоз из магазина[address=адрес магазина: ул. Ленина, д. 10, 2-й этаж, вывеска "Мой магазин"]

В результате, если покупатель при оформлении заказа выберет данный тариф, он увидит описание Самовывоз из магазина, а в заказе сохранится адрес магазина: ул. Ленина, д. 10, 2-й этаж, вывеска "Мой магазин".

Служебные команды:
Команда Действие Пример
[no_free] не выводить нулевую стоимость доставки для тарифа "доставка по совету менеджера"
[address=адрес] не выводить адресные поля, а в поле "ADDRESS" присвоить указанное значение для собственного тарифа самовывоза из магазина
[passport] вывести поля для ввода паспортных данных для тарифа "доставка транспортной компанией"
[original] не обрабатывать поле "ADDRESS" для сторонних модулей, которые сами записывают данные в адресное поле
info@edost.ru

© ООО "Айсден", 2006-2019. Все права защищены.