Рассмотрим создание фильтра в Битрикс на примере компонента Список новостей. Чтобы применить к нему фильтр, необходимо создать перед вызовом компонента переменную типа массив. В этом массиве мы задаем все поля и свойства элементов с условиями фильтрации.
Покажу пример фильтрации элементов по дате. Например, необходимо вывести список новостей за выбранный год. Выбор года можно организовать в виде списка select и последующего GET запроса. Фильтр в таком случае будет выглядеть так:
<?
global $arrFilter; //переменная фильтра
if($_GET['season'] && is_numeric($_GET['season']) ) { // если выбран год
$dateStart = '01.01.'.$_GET['season']; // дата начала года
$dateEnd = '31.12.'.$_GET['season']; // дата конца года
}
// задаем условия фильтрации, используя сложный фильтр
$arrFilter = array (
array(
"LOGIC" => "AND",
array(">=DATE_ACTIVE_FROM" => ConvertTimeStamp(strtotime($dateStart),"FULL")),
array("<=DATE_ACTIVE_FROM" => ConvertTimeStamp(strtotime($dateEnd),"FULL")),
),
);
//подключение компонента
$APPLICATION->IncludeComponent("bitrix:news.list", "news_list", array( и т.д.
?>
Обратите внимание на функцию ConvertTimeStamp. Она конвертирует время из Unix-формата в строку в формате сайта. Имеет следующие параметры:
ConvertTimeStamp(
int timestamp = false,
string type = "SHORT",
mixed site = false,
bool SearchInSitesOnly = false
);
Где timestamp – Время в Unix-формате. Необязательный параметр, по умолчанию – текущее время.
type – Тип формата. Допустимы следующие значения: FULL – полный (дата и время), SHORT – короткий (дата). Необязательный параметр, по умолчанию равен “SHORT”.
site – Идентификатор сайта, в формате которого необходимо вернуть дату. Необязательный параметр. По умолчанию – текущий сайт.
SearchInSitesOnly – Искать только на сайте. Необязательный параметр. По умолчанию – “false” текущий сайт.