Разработка на 1С-Битрикс Михаил Базаров
Форум

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

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

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

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

Не очень понял, что хотели сделать. Нафильтровать случайных элементов? В фильтре это смысла нет делать, он именно фильтр а не логика отображения. Но если что:
"SORT" => "RAND"
Подскажите,
есть bitrix:news / bitrix:news.list
есть разделы, подразделы, элементы.

есть один подраздел, который ACTIVE = N
он не выводится, но если зайти напрямую по ссылке -- то покажет пустой раздел.
Можно ли как-то фильтром, или чем другим, закрыть вывод подраздела по прямой ссылке с ACTIVE = N?
нужна там ошибка 404.
Цитата
Павел написал:
есть один подраздел, который ACTIVE = N
он не выводится, но если зайти напрямую по ссылке -- то покажет пустой раздел.
Можно ли как-то фильтром, или чем другим, закрыть вывод подраздела по прямой ссылке с ACTIVE = N?
нужна там ошибка 404.

Фильтрами думаю ни как. Из быстрого, что приходит в голову:
можно в шаблоне списка новостей сделать проверку
Код
if (count($arResult["ITEMS"] == 0)) {
    CHTTP::SetStatus("404 Not Found");
}
Как отфильтровать элементы по XML ID свойства (список)?
Михаил, фильтр по свойству ИБ "Список" отлично работает, НО...

А как вывести новости по категориям фильтра на разных страницах сайта?
При переходе в новость по категории все равно уводит на главную ленту новостей....
Цитата
Гость написал:
Михаил, фильтр по свойству ИБ "Список" отлично работает, НО...
А как вывести новости по категориям фильтра на разных страницах сайта?
При переходе в новость по категории все равно уводит на главную ленту новостей....
нашел... )) нужно поправить адрес в sef_folder
Полезные данные.
опечатка 1 - (верно - 86400): "Элементы созданные последние два дня, где 86000 это количество секунд. Умножая этот параметр на количество дней, получим элементы за последние n (86000 * n) дней"
опечатка 2 - (э, свойсва): "И э этого свойсва ID - 15"
дублируется абзац: "Отфильтровываем элементы у которых в свойстве "HIT" установлено..."
А как сделать сортировку news.list по свойству список, в данном случае у меня в этом свойстве много городов?
И еще вопрос, как кнопки с городами вывести на странице, чтобы срабатывала фильтрация?
Добрый день! Мне нужно отфильтровать на странице товары по свойству - на одной странице цвет, на другой тип дверного полотна. Использую следующий код, и всё работает прекрасно:
Код
<?php global $arrFilter; $arrFilter = ["PROPERTY_COLOR" => ["alyaska_super","loft_beliy"]];?>
Но стоит заменить свойство другим, как не выводится ничего. Вот пример:
Код
<?php global $arrFilter; $arrFilter = ["PROPERTY_TYPE_DOORS" => ["solid","solid_mold"]];?>
Не могу понять что не так. Свойство COLOR - справочник названия цветов в графе внешний код, а свойство TYPE_DOORS - список, solid, solid_mold это XML_ID. Как правильно сделать, чтобы нормально фильтровалось?
Заранее благодарна за ответ. С меня донатик.
А если я использую сразу 2 фильтра с get запросом, то как их объединить в url ?
Может не правильно понял вопрос но
URL/?GET_1=Y&GET_2=Y
Есть 2 фильтра, но работают они поочередно (logiс - and не помогает).
Как можно в url сделать через разделитель сразу 2 фильтра (/?txt2=40&txt=машина)?

<?php
global $arrFilter;
if (!empty($_GET['txt'])) {$arrFilter [] = array('%NAME' => $_GET['txt']);}
if (!empty($_GET['txt2'])) {$arrFilter [] = array('ID' => $_GET['txt2']);}
?>
Чую как-то так, но надо проверять  :)
Код
global $arrFilter;
if (!empty($_GET['txt'])) {
     $name = $_GET['txt'];
}
if (!empty($_GET['txt2'])) {
     $id = $_GET['txt2'];
}
$arrFilter['filterName'] = array(
       'ID' => $id,
       '%NAME' => $name
}
Михаил, спасибо ))
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить файлы
 
Реклама

Место для вашей рекламы

10 000 ₽ в месяц

Единый баннер, который показывается сквозным образом — сразу на всём форуме и во всех заметках блога. Одно размещение — вся аудитория.

Посмотреть, где будет выводиться: форум заметки блога

Блог-note

Заметки по 1С-Битрикс