Принцип вывода списка элементов инфоблока, такой же, как и вывод разделов. Только использовать надо CIBlockElement::GetList с некоторыми изменениями в параметрах.
Общий вид конструкции вывода разделов инфоблока выглядит следующим образом:
<?php
// подключение модуля ИБ (если не подключен)
CModule::IncludeModule("iblock");
// вывод элементов инфоблока по ИД
$arFilter = array('IBLOCK_ID' => 3, "ACTIVE" => "Y"); // фильтр разделов
$arSelect = array("ID", "NAME", "PICTURE" ); // выбор свойств раздела
$arSort = array('SORT' => 'ASC'); // сортировка разделов
$arNavStart = array("nPageSize" => 5); // количество выводимых разделов
$rsElements = CIBlockElement::GetList($arSort, $arFilter, false, $arNavStart, $arSelect);
while ($arElement = $rsElements->GetNextElement()) {
$arFields = $arElement->GetFields(); ?>
<pre>
<?print_r($arFields);?>
</pre>
<? } ?>
Из всех передаваемых в CIBlockElement::GetList параметров, обязательным является IBLOCK_ID, все остальное можно в виде пустого массива array().
Разберем параметры:
- $arFilter — фильтрует вывод элементов. В примере выше, конструкция выведет все активные элементы из инфоблока, в том числе и из подразделов. Чтобы вывести элементы раздела. Передаем дополнительно ID раздела.
$arFilter = array('IBLOCK_ID' => 3, "ACTIVE" => "Y", 'SECTION_ID' => 1);
- $arSelect — выбираем только нужные нам свойства, дабы снизить нагрузку на сайт. Если передадите массив этот, пустым, то увидите из каких свойств можно выбрать. Кроме того, можно выбрать дополнительные пользовательские поля.
$arSelect = array("ID", "NAME", "PICTURE", "PROPERTY_ATT_LINK");
- $arSort – сортировка выводимых элементов. Передаете свойство, по которому производится сортировка. asc - по возрастанию, desc - по убыванию.
- $arNavStart – ограничивает количество выводимых элементов
Для вывода отдельного элемента инфоблока, применяем CIBlockElement::GetByID
<?
// подключение модуля ИБ (если не подключен)
CModule::IncludeModule("iblock");
// вывод информации из определенного раздела
$res = CIBlockElement::GetByID(1);
if($ar_res = $res->GetNext()){ ?>
<pre>
<?print_r($ar_res);?>
</pre>
<? } ?>
Рабочий пример применения
<?$arFilter = Array("IBLOCK_ID"=>6, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y","ID" => 326); // вывести определенный элемент
//$arFilter = Array("IBLOCK_ID"=>6, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y"); // вывести все элементы инфоблока
//$arFilter = Array("IBLOCK_ID"=>6, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y","SECTION_ID" => 2); // вывести все определенного раздела
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*"); //IBLOCK_ID и ID обязательно должны быть
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields(); // основные поля
$arProps = $ob->GetProperties(); // доп свойства
?>
<pre>
<? print_r($arFields); ?>
<? print_r($arProps); ?>
</pre>
<? } ?>
Подробные описания и примеры применения CIBlockElement::GetList, CIBlockElement::GetByID
Комментарии