Фильтр по доп. свойствам - вывод в виде списка

#
Фильтр по доп. свойствам - вывод в виде списка
Дополнительные свойства товаров реализованы в виде списков.

В фильтре они соответственно также выводятся списками.

Если один и тот же список используется для указания свойств товаров нескольких разных групп, то в фильтре получается слишком длинный перечень значений, часть из которых не принадлежит ни одному товару в данной группе.

Как сделать, чтобы в фильтре выводились только те значения дополнительного свойства, которые были присвоены товарам из данной группы?

Конечно, можно для каждой группы товаров использовать различные списки, но это может привести к значительным неудобствам и путанице.
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Попробуйте запросом к БД:


<select id="myselect" name="myselect">

<?php
$rows = mysql_query("SELECT shop_properties_items_table.shop_properties_items_value as material_id
FROM shop_properties_item_for_groups_table, shop_properties_items_table, shop_items_catalog_table
WHERE shop_properties_item_for_groups_table.shop_groups_id='400'
AND shop_properties_items_table.shop_list_of_properties_id='135'
AND shop_items_catalog_table.shop_groups_id='400'
AND shop_items_catalog_table.shop_items_catalog_item_id = shop_properties_items_table.shop_items_catalog_item_id
GROUP BY shop_properties_items_table.shop_properties_items_value");
while($row = mysql_fetch_assoc($rows))
{
echo '<option value="'.$row['material_id'].'">'.$row['material_id'].'</option>';
}

?>
</select>


400 - ид группы, 135 - ид доп.сва.
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Galaxy, никогда не делайте такого в HostCMS!
Я имею в виду вывод через echo.
Надо передавать через $external_propertys в XML идентификаторы разрешенных значений доп.свойств и уже в XSL формировать список с учетом переданных разрешений.

Ну и кроме того, эта задача решается отнюдь не так просто. Например, ваше решение не учитывает ситуацию, если в группе уже применены какие-то фильтры.
Надо получать текущую выборку товаров (при чем всю, а не только тех которые отображаются на текущей странице) и по id этих товаров определять допустимые значения доп.свойств.
Для 5й версии я делал такую штуку - примерно два дня на разработку, и потом еще почти неделя на то, чтобы это стало работать _быстро_.
Для 6й пока еще писал.
Заказов не беру. Консультирую редко.
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Спасибо за подмогу!

Не вполне понял, почему это пример Galaxy не учитывает, что применены фильтры? Там же выборка идет по ID группы. Если фильтры работают по товарам внутри группы, то должно работать. С тегами работать не будет, да. И с выборкой товаров из всех групп по производителю.

А если каждому товару прогонять проверку на допустимые значения, то я представляю, какую это может создать нагрузку, если будет много товаров в группе и много значений у каждого свойства.

Может, поделитесь своим алгоритмом?
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Leevoth писал(а):
Не вполне понял, почему это пример Galaxy не учитывает, что применены фильтры? Там же выборка идет по ID группы.
именно поэтому и не учитывает.
Т.е. в список попадают _все_ возможные значения для _всех_ товаров группы. А если на группу уже наложен какой-то фильтр, то часть товаров группы этим фильтром может быть отсеяна, и их уже нельзя принимать в расчет при определении возможных значений.

Мой алгоритм не настолько хорош, чтобы его можно было выкладывать публично, меня потом завалят вопросами про то как им пользоваться и почему он у кого-то не работает. Да и к тому же он для 5й версии.
А у вас тема в разделе про шестую.
Стучитесь в аську или в почту, обсудим чем мы можем быть друг другу полезны.
Заказов не беру. Консультирую редко.
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Пример Galaxy тоже кажется под пятерку. В 6-ой версии структура БД другая совсем.
#
Re: Фильтр по доп. свойствам - вывод в виде списка
Вообще идея напрямую запросы к базе гонять как-то не очень. Есть же ОРМ, попробую с ним разобраться.

Написал вам в аську.
Авторизация