Тут я добавляю свое ограничение для сайта на шаблоне АСПРО, чтобы привязать доставки к выбранному региону, который хранится в сессии
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"]
Добавить комментарий