Своё ограничение списка служб доставки

Тут я добавляю свое ограничение для сайта на шаблоне АСПРО, чтобы привязать доставки к выбранному региону, который хранится в сессии

CustomDelivery.php

<?
use Bitrix\Sale\Delivery\Restrictions;
use Bitrix\Sale\Internals\Entity;

//создаем наследуемый класс
class CustomDeliveryClass extends Restrictions\Base
{
    public static function getClassTitle()
    {
        return 'по региону (ASPRO)';
    }
    public static function getClassDescription()
    {
        return 'доставка будет выводится только для указанного города';
    }
	//Метод check возвращает истину если выполняются необходимые условия на доставку, restrictionParams передает заданные параметры ограничения
	public static function check($shipmentParams, array $restrictionParams, $deliveryId = 0)
	{
		if ($GLOBALS['arRegion']['ID'] === $restrictionParams['REGION_ID'])
			return true;
		return false;
	}
	//extractParams должен возвращать параметры отгрузки и передает их в метод check
	protected static function extractParams(Entity $shipment)
	{
		return null;
	}
	//Задаем параметры условия доставки, эти значения можно будет ввести в интерфейсе управления
	public static function getParamsStructure($entityId = 0)
	{
        return array(
            "REGION_ID" => array(
                'TYPE' => 'NUMBER',
                'DEFAULT' => "1",
                'LABEL' => 'ID региона'
            )
        );
    }
}

?>

init.php

<?
AddEventHandler("sale", "onSaleDeliveryRestrictionsClassNamesBuildList", "onCheckRuleDelivery");
function onCheckRuleDelivery(){
    return new \Bitrix\Main\EventResult(
        \Bitrix\Main\EventResult::SUCCESS,
        array(
            'CustomDeliveryClass' => '/bitrix/php_interface/include/CustomDelivery.php'
        )
    );
}
?>

Ссылка на официальную доку: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=7352

Была проверка по сессии, но в шаблоне ASPRO используют глобальные переменные, перевел код на $GLOBALS['arRegion']['ID']
Другие варианты:
$GLOBALS["arRegionLink"]["PROPERTY_LINK_REGION"]
$_SESSION["ASPRO_FILTER"]["arRegionLink"]["PROPERTY_LINK_REGION"]

Оцените документ
Обновлено 03.02.2025

Один комментарий на ««Своё ограничение списка служб доставки»»

  1. Аватар пользователя Владимир

    Если кому требуется, есть решение для выбора региона работающее с инфоблоком. Просто выбираем нужные регионы из списка)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *