Расчет даты доставки
Модуль «Расчет даты доставки» позволяет рассчитать и вывести дату доставки товаров в карточку товара или анонс товара в каталоге для различных регионов и городов в зависимости от заданных настроек.
В настройках модуля предусмотрена возможность указать время доставки (в днях) вручную для регионов и городов России для всего каталога, либо для какой-то группы товаров каталога.
Работа модуля «Расчет даты доставки» задействует функционал модуля «Интернет-магазин», который недоступен в редакциях «Старт» и «Стандарт».
Для определения местоположения пользователя используется встроенный функционал 1С-Битрикс, что позволяет подключать различные сервисы геолокации без внесения каких-либо изменений в работу модуля. В состав продукта «1С-Битрикс:Управление сайтом» включен сервис геолокации «Sypex Geo», который предоставляет бесплатно и без регистрации 10 000 запросов в месяц.
Модуль включает два компонента, один позволяет вывести на страницу только дату доставки в указанном формате, второй – дату и город доставки с возможностью изменить местоположение пользователя.
Требования для работы модуля:
- PHP версии 8.1 или новее
- Редакция «1С-Битрикс: Управление сайтом» не ниже «Малый бизнес»
Модуль устанавливается штатными средствами 1С-Битрикс.
При корректной установке модуля в Административном разделе 1С-Битрикс станет доступен раздел «DOBROsite».
Ручная настройка сроков доставки
Настройка сроков доставки модуля вручную осуществляется в Административном разделе на странице DOBROsite > Расчет даты доставки > Ручная настройка сроков доставки.
На вкладке «Настройки по умолчанию» определяется время доставки по умолчанию для всех товаров всех каталогов сайта.
Чтобы изменить время доставки по умолчанию в какой-либо регион или город России, необходимо добавить его в таблицу «Сроки доставки в регионы и города России» с помощью кнопки «Добавить Регион / Город», заполнить количество дней доставки и сохранить настройки.
На дополнительных вкладках можно задать время доставки для определенного каталога и/или группы товаров из определенного каталога.
Для добавления вкладки, необходимо заполнить произвольное название и выбрать каталог товаров в соответствующих полях вкладки «+».
После этого станут доступны дополнительные параметры вкладки: тип товаров и фильтр товаров в формате JSON. Эти параметры предназначены для формирования выборки товаров/ТП из указанного каталога, для которых будут применены параметры доставки, указанные на этой вкладке.
Параметр «Тип товаров» определяет, к какому типу элементов будет применен фильтр.
- Простой товар – будут выбраны только простые элементы/товары каталога, удовлетворяющие условиям фильтра в формате JSON.
- Товар с предложениями – будут выбраны все ТП, которые принадлежат товарам, удовлетворяющим условиям фильтра в формате JSON.
- Торговые предложения – будут выбраны все ТП, удовлетворяющие условиям фильтра в формате JSON.
Для построения фильтра в формате JSON доступен визуальный конструктор, им можно воспользоваться, кликнув на кнопку «Конструктор фильтра».
В конструкторе фильтр формируется из одного или нескольких блоков логики, каждый из которых содержит одно или несколько условий. В системе 1С-Битрикс можно использовать два вида логики: И и ИЛИ.
Логика И позволяет выбрать только те товары, которые удовлетворяют сразу всем условиям блока. Цвет блока – зеленый. Блок И в фильтре может быть только один и должен содержать [U]хотя бы одно условие[/U].
Логика ИЛИ позволяет выбрать товары, которые соответствуют хотя бы одному из условий, например, товары одного из указанных брендов, или товары только определенных разделов каталога. Цвет блока – синий. В фильтре может быть несколько блоков ИЛИ, каждый из которых должен содержать [U]хотя бы два условия[/U].
Между собой все блоки фильтра объединяются логикой И.
Каждое условие блока должно содержать [U]свойство каталога[/U], по которому будет производиться фильтрация товаров, [U]оператор [/U](больше, меньше, равно и т.д.) и [U]значение свойства[/U]. В зависимости от значения параметра «Тип товаров» список доступных свойств будет отличаться. Для простого товара и товара с предложениями доступны все свойства каталога, для торгового предложения – свойства инфоблока, содержащего ТП.
Каждое условие может содержать только одно значение свойства.
Если структура фильтра должна быть сложнее, чем позволяет сформировать конструктор, то параметр «Фильтр товаров в формате JSON» может быть заполнен вручную. Для этого нужно составить массив фильтра $arFilter и сконвертировать его в JSON-формат. Подробнее о массиве $arFilter можно узнать из документации 1С-Битрикс.
После сохранения настроек необходимо составить список элементов, к которым будут применены параметры доставки текущей вкладки. За это отвечает агент \Dobrosite\CalcDeliveryDate\Main::agentSaveProductList(). Статус формирования списка элементов отображается в параметре «Список товаров». Доступны два значения:
- Ожидает обновления – список товаров еще не составлен или требует обновления.
- Обновлен [дата обновления] – список товаров актуален и не нуждается в обновлении.
Публикация даты доставки товара
В состав модуля входят два компонента, которые формируют строку с датой доставки согласно выполненным настройкам: «Дата доставки» и «Город и дата доставки». Компоненты находятся в группе DOBROsite Tools > Расчет даты доставки.
Примечание: если компоненты не отображаются, необходимо обновить панель компонентов.
Простой компонент «Дата доставки» (dobrosite:CalcDeliveryDate.DeliveryDate)
Компонент «Дата доставки» выводит строку с датой доставки товара согласно выполненным настройкам. Местоположение пользователя определяется автоматически. Смена местоположения пользователя не поддерживается.
[U]Параметры компонента:[/U]
- ID элемента инфоблока (PRODUCT_ID) – идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.
- Формат даты (DATE_FORMAT) – формат вывода даты доставки. Доступны следующие варианты:
- j M // 5 фев
- j F // 5 февраля
- j M Y // 5 фев 2025
- j F Y // 5 февраля 2025
- d-m-y // 05-02-25
- d.m.y // 05.02.25
- d-m-Y // 05-02-2025
- d.m.Y // 05.02.2025
- Y-m-d // 2025-02-05
- Y.m.d // 2025.02.05
- .default – простой шаблон, выводит дату доставки в указанном формате, стилистического оформления нет.
[U]Параметры компонента:[/U]
- ID элемента инфоблока (PRODUCT_ID) – идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.
- Формат даты (DATE_FORMAT) – формат вывода даты доставки. Доступны следующие варианты:
- j M // 5 фев
- j F // 5 февраля
- j M Y // 5 фев 2025
- j F Y // 5 февраля 2025
- d-m-y // 05-02-25
- d.m.y // 05.02.25
- d-m-Y // 05-02-2025
- d.m.Y // 05.02.2025
- Y-m-d // 2025-02-05
- Y.m.d // 2025.02.05
-
.default – простой шаблон, выводит город и дату доставки в указанном формате. Наименование города выполнено в виде ссылке, при клике на которую открывается модальное окно с функцией поиска города по подстроке. Стилистическое оформление минимальное.
[U]Код подключения:[/U]
[CODE]$APPLICATION->IncludeComponent(
"dobrosite:CalcDeliveryDate.DeliveryCityAndDate",
".default",
array(
"COMPONENT_TEMPLATE" => ".default",
"DATE_FORMAT" => "j F",
"PRODUCT_ID" => $productID,
),
$component
);[/CODE]
Геолокация
Модуль «Расчет даты доставки» использует встроенный функционал продукта «1С-Битрикс: Управление сайтом» для определения местоположения пользователя по его IP-адресу. Настройка сервисов геолокации осуществляется на странице Административного раздела Настройки > Настройки продукта > Геолокация.
При определении местоположения пользователя данные сохраняются в COOKIE сроком на одни сутки. Если на сайте используются какие-либо другие инструменты и/или сервисы для определения местоположения пользователя, то их можно использовать в модуле «Расчет даты доставки». Для этого данные нужно сохранить в переменную COOKIE с именем «DOBROSITE_GEOIPDATA» в виде JSON-строки.
Структура переменной DOBROSITE_GEOIPDATA:[CODE]array(
'COUNTRY' => '', // Наименование страны
'REGION_ID' => '', // Идентификатор региона в формате модуля
'REGION_NAME' => '', // Наименование региона
'CITY_ID' => '', // Идентификатор города в формате модуля
'CITY_NAME' => '', // Наименование города
);[/CODE]Для определения идентификатора региона в формате модуля следует использовать функцию \Dobrosite\CalcDeliveryDate\Main::getRegionID($regionName, 'REGION'), для определения идентификатора города - \Dobrosite\CalcDeliveryDate\Main::getRegionID($cityName, 'CITY').
Пример сохранения данных в переменную DOBROSITE_GEOIPDATA
[CODE]if(\Bitrix\Main\Loader::includeModule('dobrosite.calcdeliverydate')){
$countryName = 'Россия';
$regionName = 'Московская область';
$regionID = \Dobrosite\CalcDeliveryDate\Main::getRegionID($regionName, 'REGION');
$cityName = 'Москва';
$cityID = \Dobrosite\CalcDeliveryDate\Main::getRegionID($cityName, 'CITY');
$data = array(
'COUNTRY' => $countryName,
'REGION_ID' => $regionID,
'REGION_NAME' => $regionName,
'CITY_ID' => $cityID,
'CITY_NAME' => $cityName,
);
// Сохранение местоположения пользователя в COOKIE на 1 сутки
\Dobrosite\CalcDeliveryDate\Main::saveUserLocation($data);
}
[/CODE] 