Как скрыть свойство заказа в процедуре оформления заказа

Июль 3, 2018

Теги: Как это сделать?, Магазин

Как скрыть свойство заказа в процедуре оформления заказа (компонент "sale.order.ajax") программным путем с использованием сложной логики, например, чтобы свойство отображалось только неавторизованным пользователям?

Это можно сделать с помощью события "OnSaleComponentOrderJsData". Предварительно присвоив свойству символьный код "MY_PROPERTY_CODE", используем обработчик события:


\Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible
    
'sale'
    
'OnSaleComponentOrderJsData'
    
'SaleOrderEvents::removeSendRegistrationLinkCheckbox'
); 

class 
SaleOrderEvents 
{
    function 
removeSendRegistrationLinkCheckbox(&$arResult, &$arParams)
    {
        if(!
$GLOBALS["USER"]->IsAuthorized())
            return;
        
$tmp $arResult["JS_DATA"]["ORDER_PROP"]["properties"];
        
$arResult["JS_DATA"]["ORDER_PROP"]["properties"] = array();
        foreach(
$tmp as $property)
        {
            if(
$property["CODE"]!="MY_PROPERTY_CODE")
                
$arResult["JS_DATA"]["ORDER_PROP"]["properties"][] = $property;
        }
    }
}

← Переход к списку