Bitrix 1C. Управление сайтом

Привязка к элементам чекбоксами через форму iblock.element.add.form

Борис М. 2014-09-01 15:05:40
Добрый день!
Вот решил поделиться решением, как делать привязку чекбоксами к связным элементам через форму на сайте.
Перекопал форум, пытался применить различные предлагаемые варианты - ничего не плучилось, в конце концов допилил найденный кусок кода до рабочего.

case "E":
      $LINK_IBLOCK_ID = $arResult["PROPERTY_LIST_FULL"][$propertyID]["LINK_IBLOCK_ID"]; //  это id инфобока  привязки
      $IBLOCK_ID = $arResult[PROPERTY_LIST_FULL][$propertyID][IBLOCK_ID];
      $ELEMENT_ID = $arResult[ELEMENT][ID];

      $arValues = array();
      $res_property = CIBlockElement::GetProperty($IBLOCK_ID, $ELEMENT_ID, "sort", "asc", array());
         while ($ob_props = $res_property->GetNext())
         {
            $arValues[] = $ob_props['VALUE'];
         }   

   $arFilter = Array("IBLOCK_ID"=> $LINK_IBLOCK_ID, "ACTIVE"=>"Y");  
   $res_element = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>1000), Array());
   while($ob_element = $res_element->GetNextElement())
   {
      $arFields = $ob_element->GetFields();
      if(in_array ($arFields["ID"], $arValues))
      {
      $checked = "checked";
      }
      else
      {
      $checked = "";
      }
      ?><nobr><input type="checkbox" name="PROPERTY[<?=$propertyID?>][<?=$arFields["ID"]?>]" value="<?=$arFields["ID"]?>" id="property_<?=$arFields["ID"]?>" <?=$checked?>/><label for="property_<?=$arFields["ID"]?>"><?=$arFields["NAME"]?></label></nobr>&nbsp;&nbsp;&nbsp;&nbsp; <?   
   } 
break;
 
Данный код вставляем в файл. шаблона templates>ваш_шаблон>components>bitrix>iblock.element.add>.default>bitrix>iblock.element.add.form>.default>template.php
Допустим ищите кусок

case: "L": 
... 
break; 
и вставляете до или после него.

Не забудьте на странице вывода компонента iblock.element.add вставить через PHP-редактор ID свойства привязки инфоблока.

   "PROPERTY_CODES" => array(
      0 => "NAME",
      1 => "IBLOCK_SECTION",
      2 => "58", // ID свойства привязки инфоблока
      3 => "PREVIEW_TEXT",
      4 => "DETAIL_TEXT",
      5 => "54",
      6 => "55",
      7 => "56",
      8 => "36",
   ),
   "PROPERTY_CODES_REQUIRED" => array(
      0 => "NAME",
      1 => "PREVIEW_TEXT",
      2 => "36",
      3 => "58", // ID свойства привязки инфоблока
   ),
 
Надеюсь кому-нибудь пригодится. Код явно не идеален, будут замечания по правке - спасибо. Показать обсуждение