Войти

Глобальные фильтры на всякие случаи жизни

Глобальные фильтры на всякие случаи жизни
RSS
Глобальные фильтры на всякие случаи жизни
 
Глобальные фильтры на всякие случаи жизни

Глобальный фильтр, нужен чаще всего,  для вывода определенных элементов, из общего массива, инфорблока. Спектр применяемости очень широкий. Используется чаще всего с компонентами: Список новостей, Новости, Элементы раздела, Каталог, Топ элементов каталога и Каталог.
 
А вы не делали такую штуку: В каталоге нужно выводить первыми товары с определенным свойством(город покупателя). Причем у покупателя может город меняться. Речь идет о том, чтобы показывать товары первыми в зависимости от города покупателя.
 
Как сделать случайную сортировку?
Код
$GLOBALS['arrFilter']=array("ORDER" => 'RAND');
У меня не работает.
 
Не самое очевидное, но очень полезное:

Взято с http://ftask.ru/2017/05/30/bitrix-%D0%B2-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%BD%D0%BE­%D0%BC-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B5­-bitrixnews-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82/


Для работы arrFilter в bitrix:news , необходимо несколько условий . В этом компоненте изначально нельзя использовать рукописные фильтры , но можно сделать пару хаков.. Не путать с bitrix:news.list . Это другой компонент.
1. Выставленные значения

1
2
3


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


2. массив $arrFilter сделать глобальным.


1
2
3
4


$arrFilter['property_att_hashtags'] = $mas_hashtag_new;

//например так:
$GLOBALS['arrFilter'] = $arrFilter;

3. в файле \bitrix\templates\mynametemplate\components\bitrix\news\news­\news.php
закомментировать вот этот код


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


/*
$APPLICATION->IncludeComponent(
"bitrix:catalog.filter",
"",
Array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"FILTER_NAME" => $arParams["FILTER_NAME"],
"FIELD_CODE" => $arParams["FILTER_FIELD_CODE"],
"PROPERTY_CODE" => $arParams["FILTER_PROPERTY_CODE"],
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
"PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
 ;)  ,
$component
); */

Пояснение по этому файлу. Если перед вызовом компонента мы определили arrFilter например в файле novosti\index.php, заходим в файл \bitrix\templates\mynametemplate\components\bitrix\news\news­\news.php и вставляем вот такой код:


1


echo '<pre>'.print_r($GLOBALS[$arParams['FILTER_NAME']], true).'</pre>';

Если вставить перед компонентом bitrix:catalog.filter — то выведется значение arrFilter; А если после — то пустой массив. Вывод bitrix:catalog.filter затирает значения, которые передаются через arrFilter.
4. Не забудьте правильно прописать нужные поля FILTER_PROPERTY_CODE , FILTER_FIELD_CODE,DETAIL_PROPERTY_CODE .
5. Обратите внимание на синтаксис массива arrFilter .
Дополнительно можете почитать чужую предысторию в форуме https://dev.1c-bitrix.ru/community/forums/forum6/topic31644/ , но там ошибка . Парень удалял(комментировал) bitrix:catalog.filter из файла section.php , а надо из news.php .
Читают тему (гостей: 1)

Кроме создания сайтов, я так же веду блог с заметками о вебразработке, записываю бесплатные видеоуроки и содержу форум, на котором можно задавать вопросы и просто общаться. Заметки, преимущественно - это короткие или подробные рецепты, по реализации часто требуемого функционала- в рамках разработки сайтов на 1С-Битрикс

Показать еще
Заказать разработку:
Как к Вам обращаться? Электронная почта для ответа Коротенечко о задаче
ТЗ, любые файлы связанные с проектом или заполненный опросник скачать опросник. Загрузить файлы