В интернет магазине у каждого товара есть свойство Brand, которое хранит название бренда. Также создан инфоблок с брендами, в котором хранится название бренда и его символьный код.
Необходимо было сделать страницу которая выводит все товары текущего бренда, а также все товары бренда текущей категории, и для этих страниц добавить умный фильтр. Но умный фильтр работает только по разделам и так сделать не получилось.
Пробовал сделать костыль, который перед запуском компонента умного фильтра напрямую с массив сессии добавляет значения полей фильтра таким кодом
$param_name = 'arrFilter_'.$prop_id.'_'. abs( crc32( htmlspecialcharsbx( $prop_value ) ) );
Где $prop_id - id свойства Brand, а pro_value соответственно его значение.
$_SESSION['arrFilter'][$param_name] = 'Y'
И естественно само свойство бренд из шаблона фильтра убрали
Это должно было работать, если включить сохранение фильтра в сессии. Но т.к. свойство вводилось вручную значения немного разные, например отличались регистром и хеш не подходил.
Как можно заставить умный фильтр фильтровать не по разделам, а по брендам?
Для того чтобы реализовать такой отбор Вам нужно воспользоваться полем "FILTER_NAME"
компонента в которое необходимо передать фильтр отбора записей.
Пример как такое сделать можете посмотреть здесь, здесь, здесь и здесь
В Вашем случае примерный вид для фильтрации будет такой:
<?php
global $arBrandFilter;
$arBrandFilter = array(
"PROPERTY_CODE" => VALUE,
);
?>
Это пример фильтра.
Вы можете расширять этот массив в зависимости от условий. Для фильтрации по свойствам используйте описание свойства в формате PROPERTY_CODE => array(//значения которые принимает свойство)
. При переходе на страницу с товарами определенного бренда вам остается только определить что это за бренд, чтобы сформировать фильтр по конкретному бренду.
Теперь переменную с фильтром передаете в код вызова компонента отображения товара FILTER_NAME
:
...
"FILTER_NAME" => $arBrandFilter
...
Важно: код определяющий переменную фильтра должен располагаться в том же месте, что и вызов компонента вывода списка товаров и перед вызовом компонента.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть массив, в котором записаны цифрыВ массиве много элементов, но вывожу я только 10
всем доброе время суток не могу добавть запись в чем проблема именно в моей ситуации