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)

Блог-note разработчика

Авторизация

На сайте работает вход через социальные сети. Просто, выберите наиболее удобную сеть и авторизация произойдет автоматически:
Проходя авторизацию, Вы безоговорочно принимаете условия политики конфеденциальности