Документы для веб-разработчиков

<? ////////////////////////////////////////////////////////// // Функции для работы с инфоблоками на основе API Битрикс // (примеры использования API) ////////////////////////////////////////////////////////// // Получить ID элемента или раздела по символьному коду function getIdByCode($code, $iblock_id, $type){ if(CModule::IncludeModule("iblock")){ if($type=='IBLOCK_ELEMENT'){ $arFilter=array("IBLOCK_ID"=>$iblock_id,"CODE"=>$code); $res=CIBlockElement::GetList(array(),$arFilter,false,array("nPageSize"=>1),array('ID')); $element=$res->Fetch(); if($res->SelectedRowsCount()!=1) { return false; } else { return $element["ID"]; } } else if($type=='IBLOCK_SECTION'){ $res=CIBlockSection::GetList(array(),array('IBLOCK_ID'=>$iblock_id,'CODE'=>$code)); $section=$res->Fetch(); if($res->SelectedRowsCount()!=1) { return false; } else { return $section["ID"]; } } else { return false; } } } $IBLOCK_ID = 49; $ELEMENT_ID = getIdByCode("type-zerkala", $IBLOCK_ID, 'IBLOCK_ELEMENT'); $SECTION_ID = getIdByCode("type-divany", $IBLOCK_ID, 'IBLOCK_SECTION'); // Возвращает сгруппированные данные (Раздел 1 уровень - Элементы) function getSectionMenu($IBLOCK_ID){ $arrElements = array(); $arrGroupElements = array(); $resElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), array('IBLOCK_ID'=>$IBLOCK_ID, "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y"), false, false, array("IBLOCK_ID", "ID", 'NAME', 'SECTION_ID', 'DETAIL_PAGE_URL', 'PROPERTY_*')); $j = 0; while($obElem = $resElements->GetNextElement()){ $arFields = $obElem->GetFields(); $arProps = $obElem->GetProperties(); $arrElements[$j] = $arFields; $arrElements[$j]["PROPERTIES"] = $arProps; $j++; } array_walk($arrElements, function($item, $key) use (&$arrGroupElements) { $arrGroupElements[$item['IBLOCK_SECTION_ID']][] = $item; }); $arrSections = array(); $resSections = CIBlockSection::GetList(array("SORT"=>"ASC"),array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y"),false, array("IBLOCK_ID","ID","NAME", "SECTION_PAGE_URL", "UF_*"), false); $i = 0; while ($obSec = $resSections->GetNext()) { $arrSections[$i] = $obSec; $arrSections[$i]["ITEMS"] = $arrGroupElements[$obSec["ID"]]; $i++; } return $arrSections; } // Возвращает количество элементов по фильтру function getCntElementsByFilter($IBLOCK_ID, $arFilter = array()){ $arOrder = Array("SORT"=>"ASC"); $arFilter = array_merge(array('IBLOCK_ID'=>$IBLOCK_ID, "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y"), $arFilter); $arSelect = Array("IBLOCK_ID", "ID", 'NAME', 'SECTION_ID'); $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); return $res->SelectedRowsCount(); } // Возвращает список ID элементов по фильтру function getElementsIDbyFilter($IBLOCK_ID, $arFilter = array()){ $arOrder = Array("SORT"=>"ASC"); $arFilter = array_merge(array('IBLOCK_ID'=>$IBLOCK_ID, "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y"), $arFilter); $arSelect = Array("IBLOCK_ID", "ID", 'NAME', 'SECTION_ID'); $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); $arID = array(); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $arID[] = $arFields["ID"]; } return $arID; } // Возвращает список элементов по фильтру (поля и свойства) function getElementsByFilter($IBLOCK_ID, $arFilter = array()){ $arRes = array(); $arOrder = Array("SORT"=>"ASC"); $arFilter = array_merge(array('IBLOCK_ID'=>$IBLOCK_ID, "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS"=>"Y"), $arFilter); $arSelect = Array("IBLOCK_ID", "ID", 'NAME', 'SECTION_ID'); $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); $i = 0; while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $arRes[$i] = $arFields; $arProps = $ob->GetProperties(); $arRes[$i]["PROPS"] = $arProps; $i++; } return $arRes; } // возвращает данные дочерних разделов по ID раздела родителя function getSectionsByParentID($IBLOCK_ID, $ID) { $arOrder = array("SORT"=>"ASC"); $arFilter = array("IBLOCK_ID"=>$IBLOCK_ID, "SECTION_ID"=>$ID); $arSelect = array("IBLOCK_ID","ID","NAME", "IBLOCK_SECTION_ID", "DEPTH_LEVEL", "SECTION_PAGE_URL", "CODE"); $resList = CIBlockSection::GetList($arOrder,$arFilter,false,$arSelect, false); $arrSections = array(); while ($ob = $resList->GetNext()) { $arrSections[] = $ob; } return $arrSections; } // Возвращает список свойств инфоблока по ID инфоблока function getPropertyListByIblockID($IBLOCK_ID){ $arRes = array(); $arOrder = Array("sort"=>"asc", "name"=>"asc"); $properties = CIBlockProperty::GetList($arOrder, Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$IBLOCK_ID)); while ($fields = $properties->GetNext()) { // echo $fields["ID"]." - ".$fields["CODE"]." - ".$fields["NAME"]." - ".$fields["PROPERTY_TYPE"]."<BR/>"; $arRes[] = $fields; } return $arRes; } // Возвращает значения свойств типа список по ID свойства function getEnumListByPropertyID($PropID){ $arRes = array(); $rsEnum = CIBlockProperty::GetPropertyEnum($PropID, array('SORT'=>'asc', 'value'=>'asc')); while($arEnum = $rsEnum->Fetch()){ $arRes[] = $arEnum; } return $arRes; } // Возвращает минимальную и максимальную цену в соответствии с ID торговых предложений function getMinMaxPricesByProducts($arProduct){ $arRez = array(); CModule::IncludeModule("catalog"); $priceOrder = array("PRICE"=>"ASC"); $priceFilter = array("PRODUCT_ID"=>$arProduct, "CAN_BUY"=>"Y" ); $db_res = CPrice::GetList($priceOrder, $priceFilter); $arPrices = array(); while($ob = $db_res->Fetch()){ $arPrices[] = $ob["PRICE"]; // echo CurrencyFormat($ob["PRICE"], $ob["CURRENCY"])."\n"; // d($ob); } $lastNum = count($arPrices)-1; $arRez["MIN_PRICE"] = $arPrices[0]; $arRez["MAX_PRICE"] = $arPrices[$lastNum]; return $arRez; }