Иногда, нужно отфильтровать элементы (новости например) по дате в Битрикс, с помощью компонента «список новостей». Для этого можно воспользоваться методом фильтрации
Фильтрации новостей в компоненте «Список новостей» за периоды
Например: нужно показать все новости за сегодняшний день, для этого достаточно «навесить»» фильтр над выводом компонента «список новостей» и использовать его в параметрах компонента, в параметре ‘FILTER_NAME’
$curdate = date('d.m.Y'); //Всегда текущая дата >$arrFilterCurDate = Array(">=DATE_ACTIVE_FROM" => $curdate)
В выводе компонента не забываем задать имя фильтра и формат даты в формате d.m.Y
$APPLICATION->IncludeComponent( "bitrix:news.list", "all_popular", array( .... "FILTER_NAME" => "arrFilterCurDate", "ACTIVE_DATE_FORMAT" => "d.m.Y", .... ), false );
Вывести новости за сегодня и вчера, более сложный фильтр с диапазоном
$from = date('d.m.Y', time() - 86400); //от вчера, то есть -86400 секунд $to = date("d.m.Y"); //по текущую дату $arrFilterTwoDate = Array(">=DATE_ACTIVE_FROM" => $from, "<=DATE_ACTIVE_FROM" => $to)
Не забываем задать имя фильтра в компоненте
FILTER_NAME" => "arrFilterTwoDate",
И, например, за последний месяц. По сути, все так же, просто 86400 секунд умножаем на 30- получим дату «от» на месяц назад. Перемножением на нужную цифру, можно получить любой период: 3 дня, полгода и так далее
$from = date('d.m.Y', time() - 86400 * 30); //от минус 30 дней назад $to = date("d.m.Y"); //по текущую дату $arrFilterMounth = Array(">=DATE_ACTIVE_FROM" => $from, "<=DATE_ACTIVE_FROM" => $to)
FILTER_NAME" => "arrFilterMounth",