// Где-то в init.php
// Услуги находятся в инфоблоке 3
// Свойство SHOW_ON_DOMAIN имеет ID==25
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "UpdateServiceAvailability");
/**
* Функция вызывается при создании нового элемента
* Нужна для того, чтобы при добавлении нового поддоемна
* услуги на нем автоматически были активными
*/
function UpdateServiceAvailability(&$arFields) {
if ($arFields['IBLOCK_ID'] != 15) return;
// Получаем данные для свойства SHOW_ON_DOMAIN
$name = $arFields['NAME'];
$XML_ID = $arFields['CODE'] . '.reteco.ru';
CModule::IncludeModule('iblock');
// Добавляем новое значение в список поддоменов
CIBlockPropertyEnum::Add(
array(
'PROPERTY_ID' => 25,
'VALUE' => $name,
'XML_ID' => $XML_ID,
'DEF' => 'Y'
)
);
// Получаем ID нового свойства в списке
// Методом перебора всез пунктов и сравнивания имени
$subdomains = CIBlockPropertyEnum::GetList(
array(),
array("IBLOCK_ID" => 3, "CODE" => "SHOW_ON_DOMAIN")
);
$newPropertyId;
while($subdomain = $subdomains->GetNext()) {
if ($subdomain['VALUE'] == $name) {
$newPropertyId = $subdomain['ID'];
}
}
// Получаем список всех услуг, ака элементов инфоблока 'Услуги'
$elements = CIBlockElement::GetList(
$arOrder = array(),
$arFilter = array('IBLOCK_ID' => '3'),
$arGroupBy = false,
$arNavStartParams = false,
$arSelectFields = array('IBLOCK_ID', 'ID')
);
while ($el = $elements->GetNextElement()) {
$el= $el->fields;
// Получаем свойства перебираемой услуги
$resProp = CIBlockElement::GetProperty(
$el["IBLOCK_ID"],
$el["ID"],
false,
false,
array("CODE"=>"SHOW_ON_DOMAIN")
);
// Массив со всеми выбранными свойствами
// в который добавлено новое свойство
$props = array($newPropertyId);
while($prop = $resProp->Fetch()) {
$props[] = $prop['VALUE'];
}
CIBlockElement::SetPropertyValuesEx(
$el['ID'],
$el['IBLOCK_ID'],
array('SHOW_ON_DOMAIN' => $props)
);
}
}
Comments
0 B
|👍
/👎