Как отфильтровать новости по годам в 1С-Битрикс

В данной статье мы рассмотрим один из способов, как можно выбирать новости по годам, очень примитивный, но рабочий фильтр. В принципе, данным способом можно фильтровать и по другим параметрам.

1С-Битрикс — как применить фильтр для элементов по конкретному году

Как вы наверное уже знаете, многие компоненты поддерживают так называемый фильтр, который в битриксе принято называть arrFilter. Кстати говоря, в некоторых компонентах можно прямо в настройках все эти параметры и выбрать, например задать произвольное имя фильтра.

Но нам все равно его нужно прописать прямо перед вызовом компонента. Итак, посмотрим на наш код:

<div class="filter-block">
	<a href="?day=all&clear_cache=Y" class="filter<?if($_GET['day'] == 'all'){?> filter-active<?}?>">Все</a>
	<a href="?year=2016&clear_cache=Y" class="filter<?if($_GET['year'] == 2016){?> filter-active<?}?>">2016</a>
	<a href="?year=2015&clear_cache=Y" class="filter<?if($_GET['year'] == 2015){?> filter-active<?}?>">2015</a>
	<a href="?year=2014&clear_cache=Y" class="filter<?if($_GET['year'] == 2014){?> filter-active<?}?>">2014</a>
</div>

По нажатию на эти ссылки, наша страница будет обновляться, и, в массив $_GET добавятся значения переменных, но нас интересует год. Также, в зависимости от года будет активный класс, что поможет применить CSS. Теперь пишем фильтр для наших новостей:

<?
if (!empty($_GET['year'])) { //проверяем есть ли у нас в строке GET переменная year
	global $arrFilter; //глобальная переменная фильтра

	$firstMonth = '01.01.'.$_GET['year']; //начало года
	$lastMonth = '31.12.'.$_GET['year']; //конец года

	$arrFilter = array(
		"LOGIC" => "AND",
		array(">=DATE_ACTIVE_FROM" => ConvertTimeStamp(strtotime($firstMonth),"FULL")),
		array("<=DATE_ACTIVE_FROM" => ConvertTimeStamp(strtotime($lastMonth),"FULL")),
	);
}
?>

<?$APPLICATION->IncludeComponent("bitrix:news.list", "", array());?>

Что тут важно понять:
1.
Фильтр вы пишите перед вызовом компонента, из проверки следует, что он включится только тогда, когда мы передадим переменную year в массив $_GET
2. Чтобы ваш компонент понял, что к нему применяется фильтр, указывайте при вызове в его параметрах:

"USE_FILTER" => "Y",
"FILTER_NAME" => "arrFilter",

Это один из вариантов того, как можно фильтровать новости или любые другие элементы в 1С-Битрикс. Надеюсь данный материал был вам полезен 🙂 .

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *