Вывести записи инфоблока
Для оптимизации ресурсов рекомендуется указывать поля, которые надо вывести, чтобы не выводить все.$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")
)
)
);
Отправьте заявку сейчас
