Цитата |
---|
Кроме того, возможна привязка условий к свойствам товара. |
Сам способ привязки не описан. Разберем его.
Для получения массива необходимых условий используем событие
OnBeforeDiscountUpdate:
Код |
---|
AddEventHandler("catalog", "OnBeforeDiscountUpdate", Array("CustomEventsClass", "OnBeforeDiscountUpdateHandler" ) );
class CustomEventsClass
{
function OnBeforeDiscountUpdateHandler($ID, $arFields){
$str = json_encode($arFields);
AddMessage2Log($str);
}
} |
Или, в случае проблем с кодировкой:
Код |
---|
class CustomEventsClass
{
function OnBeforeDiscountUpdateHandler($ID, $arFields){
array_walk_recursive($arFields, function(&$item, $key){
$item = utf8_encode($item);
});
$str = json_encode($arFields);
AddMessage2Log($str);
}
} |
В лог-файле при изменении скидки теперь будет записан весь массив
arFields для
CCatalogDiscount::Update. Например если мы поставим условие "Свойство X" содержит "123", то получим следующий JSON:
Код |
---|
{
"SITE_ID": "s1",
"ACTIVE": "Y",
"XML_ID": "",
"ACTIVE_FROM": "",
"ACTIVE_TO": "",
"RENEWAL": "N",
"NAME": "\u00c8\u00c1001818",
"SORT": "100",
"MAX_DISCOUNT": "0",
"VALUE_TYPE": "P",
"VALUE": "16",
"CURRENCY": "RUB",
"NOTES": "",
"PRIORITY": "1",
"LAST_DISCOUNT": "Y",
"GROUP_IDS": [
"2011"
],
"CATALOG_GROUP_IDS": [
"168"
],
"CONDITIONS": {
"CLASS_ID": "CondGroup",
"DATA": {
"All": "AND",
"True": "True"
},
"CHILDREN": [
{
"CLASS_ID": "CondIBSection",
"DATA": {
"logic": "Equal",
"value": "10634"
}
},
{
"CLASS_ID": "CondIBProp:11:75",
"DATA": {
"logic": "Contain",
"value": "123"
}
}
]
}
}
|
где наше условие записано как
CondIBProp:11:75 (11 - ID инфоблока, 75 - ID свойства)