Вывести записи инфоблока
Для оптимизации ресурсов рекомендуется указывать поля, которые надо вывести, чтобы не выводить все.$arSelect = Array( "ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM", "PROPERTY_*" ); //IBLOCK_ID и ID обязательно должны быть указаны $arFilter = Array( "IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y" ); $res = CIBlockElement::GetList( array("ID"=>"ASC"), $arFilter, false, Array("nPageSize"=>50), $arSelect ); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); //print_r($arFields); $arProps = $ob->GetProperties(); //print_r($arProps); }
Разделы инфоблока
Выбор пользовательских свойств разделов возможен только при передаче в ключ фильтра IBLOCK_ID одиночного значения// выборка только активных разделов из инфоблока $IBLOCK_ID, в которых есть элементы // со значением свойства SRC, начинающееся с https:// $arFilter = Array('IBLOCK_ID'=>$IBLOCK_ID, 'GLOBAL_ACTIVE'=>'Y', 'PROPERTY'=>Array('SRC'=>'https://%')); $db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter, true); $db_list->NavStart(20); echo $db_list->NavPrint($arIBTYPE["SECTION_NAME"]); while($ar_result = $db_list->GetNext()) { echo $ar_result['ID'].' '.$ar_result['NAME'].': '.$ar_result['ELEMENT_CNT'].'
'; } echo $db_list->NavPrint($arIBTYPE["SECTION_NAME"]);
Сохранение свойств инфоблока
Сохранять свойства можно одной из четырёх функций:CIBlockElement::Update //обновление полей и свойств элемента CIBlockElement::SetPropertyValueCode // обновление одного свойства CIBlockElement::SetPropertyValues // обновление одного или всех свойств CIBlockElement::SetPropertyValuesEx // обновление произвольного количества свойств элементаСвойство типа файл сохраняется по другому - не надо указывать VALUE
$ELEMENT['MORE_PHOTO'] = array( CFile::MakeFileArray(…); );
Вывод записей инфоблока с фильтром по свойству
$arFilter = array( "IBLOCK_ID" => 19, "PROPERTY_CITY" = "Москва" // пример вывода со свойством ); $result = CIBlockElement::GetList ( array("ID"=>"ASC"), $arFilter ); while($element = $result->Fetch()){ echo "id: ".$element["ID"]."
"; }
Примеры фильтров
$arrFilter=Array(array( "LOGIC" => "OR", array("DATE_ACTIVE_TO"=>false), array(">DATE_ACTIVE_TO"=>ConvertTimeStamp(time(),"FULL")) )); $arrFilter=Array("RAND" => "ASC")); // случайные элементы // выборка активных элементов из информационного блока $yvalue, // у которых установлено значение свойства с символьным кодом SRC // и дата начала активности старше 1 января 2003 года // выбранные элементы будут сгруппированы по дате активности $arFilter = Array( "IBLOCK_ID"=>IntVal($yvalue), ">DATE_ACTIVE_FROM"=>date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,1,1,2003)), "ACTIVE"=>"Y", "!PROPERTY_SRC"=>false ); Операторы: "!" - не равно "<" - меньше "<=" - меньше либо равно ">" - больше ">=" - больше либо равно "><" - между
Вывод элемента ДО и ПОСЛЕ
Можно изменить nPageSize и выводить не 1 элемент, а любое количесто.
$arResult['PREV'] = $arResult['CURRENT'] = $arResult['NEXT'] = array(); //предыдущая и следующая if (\Bitrix\Main\Loader::includeModule('iblock')) { $i = 0; $arSort = array('SORT' => 'ASC', 'ID' => 'DESC'); $arFilter = array('ACTIVE' => 'Y', 'IBLOCK_ID' => $arParams['IBLOCK_ID']); $arSelect = array('ID', 'NAME', 'DETAIL_PAGE_URL'); $res = CIBlockElement::getList($arSort, $arFilter, false, array('nElementID' => $element['ID'], 'nPageSize' => 1), $arSelect); while ($row = $res->fetch()) { if ($element['ID'] == $row['ID']) { $arResult['CURRENT'] = $row; } $arRows[$row['RANK']] = $row; } if(isset($arRows[$arResult['CURRENT']['RANK']-1])) { $arResult['PREV'] = $arRows[$arResult['CURRENT']['RANK']-1]; } if(isset($arRows[$arResult['CURRENT']['RANK']+1])) { $arResult['NEXT'] = $arRows[$arResult['CURRENT']['RANK']+1]; } unset($arRows); }
Вывод элемента по ID
$res = CIBlockElement::GetByID($ID); if($ar_res = $res->GetNext()) echo $ar_res['NAME'];
Удаление записи
CIBlockElement::Delete($element['ID']); // добавить это в предыдущем цикле while
Создание записи
$el = new CIBlockElement; $arLoadProductArray = Array( "IBLOCK_SECTION_ID" => 0, // ID раздела "IBLOCK_ID" => $IBLOCK_ID, "NAME" => $title, "ACTIVE" => 'Y', "PREVIEW_TEXT" => '', "DETAIL_TEXT" => '', "CODE" => 'code', "SORT" => $sort, "IPROPERTY_TEMPLATES"=>Array( "ELEMENT_META_TITLE" => '', "ELEMENT_META_DESCRIPTION" => '', "ELEMENT_META_KEYWORDS" => '', ), ); if($PRODUCT_ID = $el->Add($arLoadProductArray)){ CIBlockElement::SetPropertyValuesEx($PRODUCT_ID, $IBLOCK_ID, $PROP); }else{ echo "Error: ".$el->LAST_ERROR." "; }
Обновить свойство инфоблока
// простое свойство $ar = 'Значение'; // или множественное $ar[] = array( "VALUE" => $str, "DESCRIPTION" => $pos ); CIBlockElement::SetPropertyValuesEx( $element['ID'], $IBLOCK_ID, array("PROPERTY_CODE" => $ar) );
Удалить множественное свойство инфоблока
CIBlockElement::SetPropertyValuesEx( $element['ID'], $IBLOCK_ID, array( "PROPERTY_CODE" => Array ( "VALUE" => array("del" => "Y") ) ) );
Отправьте заявку нашим специалистам