Advertisement
Gistrec

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

Aug 28th, 2018
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.47 KB | None | 0 0
  1. // Где-то в init.php
  2. // Услуги находятся в инфоблоке 3
  3. // Свойство SHOW_ON_DOMAIN имеет ID==25
  4.  
  5. AddEventHandler("iblock", "OnAfterIBlockElementAdd", "UpdateServiceAvailability");
  6. /**
  7.  * Функция вызывается при создании нового элемента
  8.  * Нужна для того, чтобы при добавлении нового поддоемна
  9.  * услуги на нем автоматически были активными
  10.  */
  11. function UpdateServiceAvailability(&$arFields) {
  12.     if ($arFields['IBLOCK_ID'] != 15) return;
  13.  
  14.     // Получаем данные для свойства SHOW_ON_DOMAIN
  15.     $name = $arFields['NAME'];
  16.     $XML_ID = $arFields['CODE'] . '.reteco.ru';
  17.  
  18.     CModule::IncludeModule('iblock');
  19.  
  20.     // Добавляем новое значение в список поддоменов
  21.     CIBlockPropertyEnum::Add(
  22.         array(
  23.             'PROPERTY_ID' => 25,
  24.             'VALUE'  => $name,
  25.             'XML_ID' => $XML_ID,
  26.             'DEF'    => 'Y'
  27.         )
  28.     );
  29.  
  30.     // Получаем ID нового свойства в списке
  31.     // Методом перебора всез пунктов и сравнивания имени
  32.     $subdomains = CIBlockPropertyEnum::GetList(
  33.         array(),
  34.         array("IBLOCK_ID" => 3, "CODE" => "SHOW_ON_DOMAIN")
  35.     );
  36.     $newPropertyId;
  37.     while($subdomain = $subdomains->GetNext()) {
  38.         if ($subdomain['VALUE'] == $name) {
  39.             $newPropertyId = $subdomain['ID'];
  40.         }
  41.     }
  42.  
  43.     // Получаем список всех услуг, ака элементов инфоблока 'Услуги'
  44.     $elements = CIBlockElement::GetList(
  45.         $arOrder = array(),
  46.         $arFilter = array('IBLOCK_ID' => '3'),
  47.         $arGroupBy = false,
  48.         $arNavStartParams = false,
  49.         $arSelectFields = array('IBLOCK_ID', 'ID')
  50.     );
  51.     while ($el = $elements->GetNextElement()) {
  52.         $el= $el->fields;
  53.  
  54.         // Получаем свойства перебираемой услуги
  55.         $resProp = CIBlockElement::GetProperty(
  56.             $el["IBLOCK_ID"],
  57.             $el["ID"],
  58.             false,
  59.             false,
  60.             array("CODE"=>"SHOW_ON_DOMAIN")
  61.         );
  62.  
  63.         // Массив со всеми выбранными свойствами
  64.         // в который добавлено новое свойство
  65.         $props = array($newPropertyId);
  66.         while($prop = $resProp->Fetch()) {
  67.             $props[] = $prop['VALUE'];
  68.         }
  69.  
  70.         CIBlockElement::SetPropertyValuesEx(
  71.             $el['ID'],
  72.             $el['IBLOCK_ID'],
  73.             array('SHOW_ON_DOMAIN' => $props)
  74.         );
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement