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
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.