Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Каталог всех товаров с одинаковым свойством ввиде с блоком сортировки ввиде списка

00 голосов
8
Здравствуйте, уважаемые коллеги программисты!

Подскажите как сделать вывод всех товаров из каталога с фильтром по свойству (бренд).

Также нужен список всех записей этого свойства в ввиде выпадающего списка и ссылок на все товары с этим свойством.

В информационном блоке прописано у всех товаров свойство бренд [BRAND].

Образец: http://shop.fott.ru/

Кто поможет с данным решением - получит донат.

Для быстрой связи - Icq # 37602817, skype: zub-rnd.
спросил 04 Июль, 13 от Zaharias (160 баллов)

8 Ответы

00 голосов
Цитата
zub-rnd пишет:
В информационном блоке прописано у всех товаров свойство бренд [BRAND].

Свойство типа "список" или строка"?

Цитата
zub-rnd пишет:
Кто поможет с данным решением - получит донат.

Attaboy
ответил 04 Июль, 13 от Ly (4,580 баллов)
00 голосов
Цитата
Dmitry Ban пишет:
Свойство типа "список" или строка"?


Список, а берется это список из XML-ID:
1|Nike
2|CR


Цитата
Attaboy


Это что значит Attaboy?
ответил 14 Авг, 13 от Zaharias (160 баллов)
00 голосов
Вообще [BRAND] это по сути строка (с одним значением) просто сейчас стоит список, чтобы при добавлении товара можно было выбрать из списка.

http://element.vshtabe.ru


Пока что получилось сделать только так (можете посмотреть на сайте, но и сюда выложу)

http://clip2net.com/clip/m66236/1300374623-clip-9kb.png

Но нужны ссылки на Бренд + выпадающий список со всеми брендами с которого при выборе переходило на выбранный бренд.
ответил 13 Ноя, 13 от Zaharias (160 баллов)
00 голосов
Если список, то сделайте, например, через компонент "Фильтр по элементам" (bitrix:catalog.filter).

Если делать руками, то:
* значения списка можно получить через CIBlockPropertyEnum::GetList()
* отфильтровать товары по бренду можно через CIBlockElement::GetList(), задав в $arFilter либо
'PROPERTY_BRAND' => ID значения свойства
либо
'PROPERTY_BRAND_VALUE' => значение свойства
Первое предпочтительней.
ответил 21 Фев, 14 от Ly (4,580 баллов)
00 голосов
Да, но мне нужно, чтобы после применения фильтра он переходил на страницу выбранного бренда!

А! Нужно т.е. создать страницу туда запихнуть весь каталог и добавить туда "Фильтр по элементам" и после этого он отфильтрует только по бренду?!

Немного не то... Мне нужно чтобы после выбора переходило туда где этот фильтр применяется сразу...
ответил 13 Июнь, 14 от Zaharias (160 баллов)
00 голосов
Код
<?
GLOBAL $arrFilter;
$arrFilter = array();
$brand = isset($_GET['brand']) ? intval($_GET['brand']) : 0;
if ($brand > 0)
    $arrFilter['PROPERTY_BRAND'] = $brand;
?>

<?$APPLICATION->IncludeComponent("bitrix:catalog.section", "", array(
   "IBLOCK_TYPE" => "...",
   "IBLOCK_ID" => "...",
   "SECTION_ID" => "",
   ...........
   "FILTER_NAME" => "arrFilter",
   ...........
   "INCLUDE_SUBSECTIONS" => "N",
   "SHOW_ALL_WO_SECTION" => "Y",
   ...........
   "CACHE_FILTER" => "Y",
   ...........
   ),
   false
);?>

Фильтр по бренду при урлах вида something.php?brand=123

Upd: для правильной работы кеширования всё-таки нужно использовать урлы вида /something/123/ и создавать соответствующее правило обработки адреса. Ну, или выставлять значение параметра CACHE_FILTER в "N", и обходиться без кеширования.
ответил 11 Окт, 14 от Ly (4,580 баллов)
00 голосов
Почему-то не работает!

Сделал страничку element.vshtabe.ru/catalog.php

Туда поместил "bitrix:catalog.section" и выше Ваш php-код.

Вбиваю: element.vshtabe.ru/catalog.php?brand=Nike.

Не фильтрует.
ответил 12 Фев, 15 от Zaharias (160 баллов)
00 голосов
И не должен. Либо ID значения свойства и $arrFilter['PROPERTY_BRAND'], или значение свойства и $arrFilter['PROPERTY_BRAND_VALUE'].

Кроме того, тупо делать нельзя. intval('Nike') чему будет равно?
ответил 23 Май, 15 от Ly (4,580 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
1 ответ
0 голосов
3 ответов
0 голосов
2 ответов
0 голосов
1 ответ