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

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