Дата последнего изменения: 13.11.2023
К службам доставки можно добавлять дополнительные услуги, оказываемые клиентам при доставке товаров. Так, например, вы можете спросить у клиента нужно ли товар упаковать в подарочную упаковку.
В случае, если вас не устраивают стандартные типы дополнительных услуг, то вы можете добавлять свои собственные типы. Для этого следует использовать событие onSaleDeliveryExtraServicesClassNamesBuildList, которое регистрирует пользовательские типы услуг:
EventManager::getInstance()->addEventHandler( 'sale', 'onSaleDeliveryExtraServicesClassNamesBuildList', 'myFunction' );
Зарегистрируйте свой класс, который реализует ваш кастомный тип:
class MyService extends \Bitrix\Sale\Delivery\ExtraServices\Base
{
public function getClassTitle()
{
return "Моя услуга";
}
...
}
Обработчик события должен вернуть список ваших классов типов дополнительных услуг и путей к ним:
public static function myFunction(Main\Event $event)
{
return new Main\EventResult(
Main\EventResult::SUCCESS,
array(
'MyService' = > 'folder/myservice.php',
)
);
}
В результате ваш класс включится в работу и будет реализован интерфейс услуг в соответствии с вашими настройками.
Класс наследуется от базового Base, которые размещается в директории: /bitrix/modules/sale/lib/delivery/extra_services.
Там же вы сможете найти примеры штатных типов услуг.