Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Где-то в 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)
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement