1. Если у вас нет опыта в программировании, тогда не рекомендуем самостоятельно интегрировать модуль (иначе можно случайно вывести из строя весь магазин!). Все необходимые исправления могут внести наши специалисты (просто подайте заявку на info@edost.ru).
2. Это НЕ модуль доставки - сам по себе он ничего не рассчитывает, а только показывает то, что выдадут стандартные модули доставки настроенные в админке bitrix (Магазин > Настройки > Службы доставки).
3. Если в магазине включено несколько модулей доставки (СДЭК, DPD, ПЭК, Деловые линии и др.), тогда стоимость доставки в карточке товара может рассчитываться очень долго (причина в скорости расчета самих модулей доставки - от модуля расчета в карточке это никак не зависит).
Если требуется быстрый расчет доставки, тогда рекомендуем использовать модуль доставки eDost.
4. Максимальный функционал модуля расчета в карточке доступен только при использовании его вместе с модулем доставки eDost и модулем местоположений eDost.
путь к страницам на которых будет вызываться js интеграция (если пусто - тогда подключается на всех страницах, если страниц несколько необходимо использовать разделитель "|")
отредактировать файл с шаблоном js интеграции: /bitrix/components/edost/catalogdelivery/templates/.default/jsintegration.php
если файл с интеграцией будет использоваться свой, тогда необходимо прописать путь в константе: define('CATALOGDELIVERY_EDOST_JSINTEGRATION_TEMPLATE', '/bitrix/путь_к_папке_с_шаблоном/');
штатный шаблон уже содержит код js интеграции - в простом варианте там будет достаточно исправить querySelector к элементу магазина, в который будет добавляться блок с калькулятором
код c подключением модуля можно скопировать из раздела прямая интеграция
Интеграция кэшируется, поэтому после правок файла jsintegration.php или jsintegration_include.php необходимо сбрасывать кэш битрикса, или на время разработки добавить в константах define('CATALOGDELIVERY_EDOST_CACHE', 'N');
Алгоритм работы интеграции
1. По событию битрикса OnBeforeProlog модуль проверяет константу CATALOGDELIVERY_EDOST_JSINTEGRATION_PAGE - если она задана и текущая страница соотвествует разрешенной, вставляет небольшой js код, который после загруки страницы отправляет запрос на получение основного кода интеграции.
2. Модуль ищет файл шаблона jsintegration.php - если он есть, тогда удаляет оттуда хеадер битрикса <?require( ... /bitrix/header.php");?> и полученный код сохраняет в ту же папку под имененм jsintegration_include.php
3. Модуль ищет файл подключения jsintegration_include.php - если он есть, тогда выполняет его и полученный результат передает в ответе.
4. Полученный код добавляется на страницу в скрытый блок id=edost_catalogdelivery_jsintegration и выполняется js код из интеграции (там вашему разработчику необходимо написать свой код, который будет искать на странице блок для размещения калькулятора, и переносить туда данные из скрытого блока).
Настройка
1. Войти в магазин под администратором.
2. Открыть шаблон jsintegration.php в браузере, указав его полный путь:
http://shop.ru/bitrix/components/edost/catalogdelivery/templates/.default/jsintegration.php
3. Сбросить кэш, включить режима правки и открыть настройки:
4. Интеграция (прямая)
При прямой интеграции блок с калькулятором выводится сразу при загрузке страницы.
После обновления магазина шаблон может переписаться новой версией и интеграция сбросится, поэтому потребуется проводить интеграцию заново.
Тип интеграции:
по кнопке
превью
отдельный блок
ручной калькулятор
При использовании типа интеграции "превью" и "отдельный блок" доставка будет рассчитыаться сразу при открытии страницы товара, поэтому при использовании автоматизированных служб доставки работающих с внешними серверами (eDost, СДЭК, DPD, ПЭК, Деловые линии и др.) обязательно учитывайте!!!
1. Значительно увеличится количество запросов к серверам служб доставки (например, ваш магазин ежедневно посещает 100 человек, каждый просматривает по 10 товаров – итого 1000 расчетов в день). Это значит, что при использовании сервиса eDost, в большинстве случаев, потребуется перейти на более дорогой тариф!
2. Для уменьшения количества запросов в параметрах компонента рекомендуется включить "Экономный расчет".
Код интеграции:
код необходимо вставить в шаблон, в место, где должен будет выводиться калькулятор
// задать собственную цену товара: [цена] или [цена|валюта] (если валюта не указана, расчет производится по валюте магазина)
//echo '<input id="edost_catalogdelivery_product_price_'.$product_id.'" value="1005|RUB" type="hidden">';
//foreach ($arResult['PRICES'] as $v) if (!empty($v['DISCOUNT_VALUE'])) { echo '<input id="edost_catalogdelivery_product_price_'.$product_id.'" value="'.$v['DISCOUNT_VALUE'].'|'.$v['CURRENCY'].'" type="hidden">'; break; }
?>
// задать собственную цену товара: [цена] или [цена|валюта] (если валюта не указана, расчет производится по валюте магазина)
//echo '<input id="edost_catalogdelivery_product_price_'.$product_id.'" value="1005|RUB" type="hidden">';
//foreach ($arResult['PRICES'] as $v) if (!empty($v['DISCOUNT_VALUE'])) { echo '<input id="edost_catalogdelivery_product_price_'.$product_id.'" value="'.$v['DISCOUNT_VALUE'].'|'.$v['CURRENCY'].'" type="hidden">'; break; }
?>
Если требуется модифицировать входные параметры заказа и результаты расчета (например, изменить стандартный выбор местоположений на свой, или заменить рассчитанную стоимость доставки своим значением), тогда можно сделать это через события модуля.