Если список, то сделайте, например, через компонент "Фильтр по элементам" (bitrix:catalog.filter).
Если делать руками, то: * значения списка можно получить через CIBlockPropertyEnum::GetList() * отфильтровать товары по бренду можно через CIBlockElement::GetList(), задав в $arFilter либо 'PROPERTY_BRAND' => ID значения свойства либо 'PROPERTY_BRAND_VALUE' => значение свойства Первое предпочтительней.
Фильтр по бренду при урлах вида something.php?brand=123
Upd: для правильной работы кеширования всё-таки нужно использовать урлы вида /something/123/ и создавать соответствующее правило обработки адреса. Ну, или выставлять значение параметра CACHE_FILTER в "N", и обходиться без кеширования.
> Да. Причем по мимо фильтра, который мне нужен отдельным блоком (что вообщем-то > я уже нашел за вчера как сделать) мне нужно, чтобы ниже этого фильтра еще > выводился список всех брендов. Я так понимаю, что это можно получить используя > примеры с данной страницы: > http://dev.1c-bitrix.ru/api_help/iblock/filter.php > > Пришедшая в голову мысль на данный момент это сделать так: > > $res = CIBlockElement::GetList(Array(), Array("!=BRAND"=>"null")); > > и потом вывести $res используя конструкцию foreach. > > Но меня немного интересует как тогда настроить, чтобы значения который > передаются в GET обрабатывались, чтобы получались ссылки вида > /products/$brands/. > > Еще нужно чтобы после применения фильтра выход с формы был на страницу с > каталогом и примененным фильтром.
Все также напоминаю про донат за помощь в разработке по итогу готового решения.
Не говоря уже о том, что это многим нужно, потому что простыми средствами этого сделать нельзя.
У вас Бренд - это строковое множественное поле? Тогда надо просто связать компоненты:
1. напишите в тэге form фильтра action="/catalog.php", чтобы переходил куда надо. 2. поставьте в section.list название дополнительного фильтра arrFilter, чтобы фильтровал
Но меня немного интересует как тогда настроить, чтобы значения который > передаются в GET обрабатывались, чтобы получались ссылки вида > /products/$brands/.
Есть предложение сделать такие разделы и туда поместить индекс в котором будет прописан фильтр который выбирает все товары по свойству.
Но во-первых это не автоматизированное решение. Во-вторых я стараюсь, чтобы это был универсальное решение.
1. С фильтром я вам помог. Он работает. 2. Бренды под фильтром - это другая задача. Это меню. Вам надо сделать под "меню по разделам" вида /catalog/products/$section/
Вы хотите, чтобы нижнее меню зависело от результатов по верхнему фильтру? Но тогда придется выбрать все товары и посмотреть, какие свойства используются. Для этого у CIBlockElement::GetList есть четвертый параметр для группировки
В любом случае начните читать документацию: CIBlockElement::GetList
и
CIBlockPropertyEnum::GetList - выбирает все значения свойств.
1. В модуле управления структурой создай новый тип меню, например, 'brends'. Отметь тип меню в главном модуле. 2. создай файлы .brends.menu_ext.php и .brends.menu.php в корне сайта или только в папке /catalog/ 3. в файл .brends.menu_ext.php сам напиши логику для формирования пунктов меню.
Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
// твой код, который сформирует массив дополнительных пунктов меню
$aMenuLinksExt
$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
?>
4. размести компонент .menu в шаблоне сайта, выбери тип brends, и поставь галочку использовать _ext файлы.