Документация для разработчиков
Темная тема

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 - поле для сортировки, может принимать значения:
  • sort - индекс сортировки;
  • timestamp_x - дата изменения;
  • name - название;
  • id - ID элемента;
  • active_from - начало периода действия элемента;
  • active_to - окончание периода действия элемента;
  • order - порядок сортировки сортировки, может принимать значения:
    • asc - по возрастанию;
    • desc - по убыванию.
    Необязательный. По умолчанию равен Array("sort"=>"asc")
Полный список полей сортировки и дополнительную информацию смотрите в CIBlockElement::GetList()
cnt Максимальное количество записей, которые вернет функция.
Необязательный. По умолчанию выбираются все записи.
arFilter Дополнительный фильтр по произвольным полям вида Array("Фильтруемое поле"=>"Значение", ...).
Фильтруемое поле может принимать значения:
  • ID - по коду;
  • ACTIVE - фильтр по активности (Y|N); передача пустого значения ("ACTIVE"=>"") выводит все элементы без учета их состояния;
  • NAME - по имени и фамилии (можно искать по шаблону [%_]);
  • PREVIEW_TEXT - по имени и фамилии (можно искать по шаблону [%_]);
  • DETAIL_TEXT - по детальному описанию (можно искать по шаблону [%_]);
  • SEARCHABLE_CONTENT - по содержимому для поиска. Включает в себя название, описание для анонса и детальное описание (можно искать по шаблону [%_]);
  • CODE - по символьному идентификатору (можно искать по шаблону [%_]);
  • SORT - по сортировке;
  • EXTERNAL_ID - по внешнему коду (можно искать по шаблону [%_]);
  • TIMESTAMP_X - по времени изменения;
  • DATE_CREATE - по времени создания;
  • DATE_ACTIVE_FROM - по дате начала активности;
  • DATE_ACTIVE_TO - по дате окончанию активности;
  • ACTIVE_DATE - непустое значение задействует фильтр по датам активности (DATE_ACTIVE_FROM и DATE_ACTIVE_TO). Если значение не установлено (""), фильтрация по датам активности не производится;
  • IBLOCK_ID - по коду информационного блока;
  • IBLOCK_CODE - по символьному коду информационного блока (можно искать по шаблону [%_]);
  • IBLOCK_LID - по языку (можно искать по шаблону [%_]);
  • IBLOCK_TYPE - по типу блока (можно искать по шаблону [%_]);
  • IBLOCK_ACTIVE - по активности блока (можно искать по шаблону [%_]);
  • SECTION_ID - по родительскому разделу;
  • PROPERTY_<код свойства> - фильтр по значениям свойств (можно искать по шаблону [%_]), для свойств типа "список", поиск будет осуществляться не по значению перечисления, а по его идентификатору;
  • PROPERTY_<код свойства>_VALUE - фильтр по значениям списка для свойств типа "список" (можно искать по шаблону [%_]), поиск будет осуществляться по строковому значению списка, а не по идентификатору;
  • CATALOG_<CATALOG_FIELD>_<PRICE_TYPE> - по полю CATALOG_FIELD из цены типа PRICE_TYPE (ID типа цены), где CATALOG_FIELD может быть: PRICE - цена, CURRENCY - валюта.
Все фильтруемые поля (кроме SECTION_ID и ACTIVE_DATE) могут содержать перед названием тип проверки фильтра, а поля SECTION_ID и ACTIVE_DATE могут содержать перед названием тип проверки фильтра "!" - не равно.

Значения фильтра - одиночное значение или массив.

Необязательный. По умолчанию - пустой массив.
Полный список полей фильтра и дополнительную информацию смотрите в CIBlockElement::GetList().
arSelect Массив возвращаемых полей элемента. Список полей элемента, а также можно сразу выводить значения его свойств. Для этого в качестве одного из полей необходимо указать PROPERTY_<PROPERTY_CODE>, где PROPERTY_CODE - ID или символьный код. В результате будет выведены значения свойств элемена в виде полей:
  • PROPERTY_<PROPERTY_CODE>_VALUE - значение;
  • PROPERTY_<PROPERTY_CODE>_ID - код значения у элемента;
  • PROPERTY_<PROPERTY_CODE>_ENUM_ID - код значения (для свойств типа список).
При установленном модуле торгового каталога можно выводить и цены элемента. Для этого в качестве одного из полей необходимо указать CATALOG_GROUP_<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
Наверх