Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
Ответить
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 .
Ответить
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить файлы
 
Заметки разработчика

Примерно с 2013-го года пишу, короткие и не очень, заметки по разработке сайтов на Битрикс. Возможно, будут полезны кому-то еще. Во всех заметках есть возможность комментирования и обсуждения. Вы можете задавать уточняющие вопросы прямо там- отвечаю или дополняю заметки по возможности.

Заказaть разработку attention