Июль 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;
}
}
}