Gistrec icon

Bitrix установка активности на поддомене при его добавлении

Gistrec | PRO | 08/29/18 04:20:23 AM UTC | 0 ⭐ | 579 👁️ | Never ⏰ | []
PHP |

2.47 KB

|

None

|

0 👍

/

0 👎

// Где-то в 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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎