GetIBlockElementListEx
Описание
CIBlockResult GetIBlockElementListEx ( string type, mixed TypesInc = Array(), mixed TypesExc = Array(), array Order = Array("SORT"=>"ASC"), int cnt = 0, array arFilter = Array(), array arSelect = Array(), mixed arGroupBy = false );
Функция возвращает активные для текущего сайта элементы из информационных блоков типа type. Функция работает только с активными инфоблоками, так как в ней принудительно выставлен фильтр по активности инфоблока.
Возвращаемое значение
Функция возвращает объект класса CIBlockResult с активными элементами (у которых установлен флаг "Активен", выполняется условие периода активности и находящиеся в активных информационных блоках для текущего сайта).
Примечание: при работе с результатом рекомендуется применять метод класса CDBResult::GetNext(),
результатом которого будет массив с полями элемента информационного блока. Все
поля при этом будут преобразованы в "HTML безопасный" вид, а в полях с шаблонами
URL-ов к страницам (LIST_PAGE_URL - списка элементов и
DETAIL_PAGE_URL - детального просмотра) будут заменены параметры
#SITE_DIR#
, #IBLOCK_ID#
, #EXTERNAL_ID#
и
#ID#
. Если результат пуст или достигнут конец выборки CDBResult::GetNext()
вернет false. Также можно воспользоваться любыми другими методами класса CDBResult,
но при этом в полях LIST_PAGE_URL и DETAIL_PAGE_URL будут
оригинальные (как они введены в форме редактирования информационного блока)
шаблоны URL-ов, а не с замененными параметрами #SITE_DIR#
,
#IBLOCK_ID#
, #EXTERNAL_ID#
и #ID#
.Параметры функции
Параметр | Описание |
---|---|
type | Тип информационных блоков из которых выбираются элементы. |
TypesInc | Фильтр для включения по ID и(или) символьному коду информационного
блока. В качестве параметра может быть как единичное значение (ID или
символьный код информационного блока), так и массив (array) таких
значений. Необязательный. По умолчанию включаются все элементы из информационных блоков типа type без дополнительной фильтрации. Пример: "product_news" |
TypesExc | Фильтр для исключения по ID и(или) символьному коду информационного
блока. В качестве параметра может быть как единичное значение (ID или
символьный код информационного блока), так и массив (array) таких
значений. Необязательный. По умолчанию выбираются все элементы из информационных блоков типа type без исключений. Пример: Array("company_news", "product_news", 22) |
Order | Порядок сортировки - массив вида Array(by1=>order1[,
by2=>order2 [, ..]]), где by - поле для
сортировки, может принимать значения:
|
cnt | Максимальное количество записей, которые вернет функция.
Необязательный. По умолчанию выбираются все записи. |
arFilter | Дополнительный фильтр по произвольным полям вида Array("Фильтруемое
поле"=>"Значение", ...). Фильтруемое поле может принимать значения:
Значения фильтра - одиночное значение или массив. Необязательный. По умолчанию - пустой массив. Полный список полей фильтра и дополнительную информацию смотрите в CIBlockElement::GetList(). |
arSelect | Массив возвращаемых полей элемента. Список полей элемента, а также
можно сразу выводить значения его свойств. Для этого в качестве одного из
полей необходимо указать PROPERTY_<PROPERTY_CODE>, где
PROPERTY_CODE - ID или символьный код. В результате будет
выведены значения свойств элемена в виде полей:
По умолчанию выводятся все поля элемента. |
arGroupBy | Массив полей для группировки элемента. Если поля указаны, то выборка по ним группируется, а в результат добавляется поле CNT - количество сгруппированных элементов. Если указать в качестве arGroupBy пустой массив, то функция вернет количество элементов CNT по заданному фильтру. Группировать можно по полям элемента, а также по значениям его свойств. Для этого в качестве одного из полей группировки необходимо указать PROPERTY_<PROPERTY_CODE>, где PROPERTY_CODE - ID или символьный код свойства. Необязательное. По умолчанию false - записи не группируются. |
Смотрите также
Примеры использования
<? if(CModule::IncludeModule("iblock")) { // выберем 15 элементов типа "news" из информационного блока "company_news" $items = GetIBlockElementListEx("news", "company_news", Array(), Array("DATE_ACTIVE_FROM"=>"DESC", "SORT"=>"ASC", "NAME" => "ASC"), 15); // постраничная навигация $items->NavPrint("Новости компании"); // цикл по всем новостям while($arItem = $items->GetNext()) { // выведем ссылку на страницу с детальным просмотром echo "<a href='".$arItem["DETAIL_PAGE_URL"]."'>".$arItem["NAME"]."</a>"; // выведем дату echo $arItem["DATE_ACTIVE_FROM"]."<br>"; // выведем картинку для анонса, с ссылкой на детальный просмотр echo ShowImage($arItem["PREVIEW_PICTURE"], 100, 100, "border='0'", $arItem["DETAIL_PAGE_URL"]); // выведем анонс echo $arItem["PREVIEW_TEXT"]."<hr>"; } $items->NavPrint("Новости компании"); } ?>
<? // Например, если необходимо вывести новости за сегодняшнюю дату (DATE_ACTIVE_FROM >= сегодня): $items = GetIBlockElementListEx("news", Array(), Array(), Array("SORT"=>"ASC", "ID" => "DESC"), 15, Array(">=DATE_ACTIVE_FROM"=> date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT"))))); // если необходимо вывести все вчерашние новости, т.е. // (DATE_ACTIVE_FROM >= вчера && DATE_ACTIVE_FROM < сегодня): $items = GetIBlockElementListEx("news", Array(), Array(), Array("SORT"=>"ASC", "ID" => "DESC"), 15, Array(">=DATE_ACTIVE_FROM"=> date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0,0,0,date("m"),date("d")-1,date("Y"))), "<DATE_ACTIVE_FROM"=> date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0,0,0,date("m"),date("d"),date("Y"))))); // если необходимо вывести все новости за 1 января 2003г., т.е. // (DATE_ACTIVE_FROM >= 01.01.2003 && DATE_ACTIVE_FROM < 02.01.2003): $items = GetIBlockElementListEx("news", Array(), Array(), Array("SORT"=>"ASC", "ID" => "DESC"), 15, Array(">=DATE_ACTIVE_FROM"=> date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0,0,0,1,1,2003)), "<DATE_ACTIVE_FROM"=> date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0,0,0,1,2,2003)))); ?>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024