Legosp Forum
Shop-Script "Legosp" => Разработка => Тема начата: nictboom от Сентября 12, 2011, 10:54:07 pm
-
Возник вопрос: как реализовать идею при выборе категории , что бы появлялись параметры (доп.параметры) относящиеся к этой категории/товарам?
Для себя решил "косяво"(через доп. поля в базе).
Есть идеи?
У меня была идея: добавить в PRODUCT_OPTIONS поле categoryID(или попроще), и потом при редактировании параметра, добавлять ID категории.
И при выборе категории, через условие, вылазиют параметры, те которые к ней(или товару) относятся.
как то так, если правильно объяснил...
-
не slamm, эт понятно.
примером может служить любой солидный ресурс, в котором зайдя в категорию, ты видишь только фильтр относительно данной категории/товара.
У себя же я максимум решил добавив в категорию и в родительский доп.параметр "сводящее звено", хотя это тупенько.
Достаточно добавить в родительский доп.параметр помимо productID ещё и categoryID(именно при редактировании параметра, ...я не смог своять чёт фукнцию :( ) и условием отбирать в фильтре: {if $option.categoryID==$selected_category[0]}.."параметры относящиеся к данной категории"..{/if}
ps забыл добавить: фильтр по доп.парам. у меня выведен отдельно в блок.
вот мой, пример tehnoboom/com/ua (категории: кондиционеры и конвекторы)
-
я просто не знаю как вытянуть доп.параметры из таблицы PRODUCT_OPTIONS_TABLE для определённой категории/товара, не вижу привязки. для PRODUCT_OPTIONS_VAL_TABLE есть общее - productID.
-
Серёга, спасибо за наводку. ;)
вроде получилось. всё же остаются вопросы.
вот пример рабочего exsearch.php(то что намутил):<?
if (!isset($_GET["search_expanded"]))
{
$sql="SELECT po.optionID, po.`name` FROM ".PRODUCT_OPTIONS_TABLE." as po LEFT JOIN ".PRODUCT_OPTIONS_V_TABLE." as pov USING(optionID) LEFT JOIN ".PRODUCTS_TABLE." as p USING(productID) WHERE po.optionID=pov.optionID";
$sql .=" and p.categoryID in (".$categoryID.") order by sort_order";
$options = array();
$q=db_query($sql);
while ($row = db_fetch_row($q))
{
$options[$row[0]]['name'] = $row[1];
$options[$row[0]]['variant'] = db_arAll("select * from ".PRODUCT_OPTIONS_VAL_TABLE." where optionID=".$row[0]." order by sort_order");
}
$smarty->assign("options_search", $options);
}
?>
но если глубина вложения категории 3-я (например: "климат.техника"->"конвекторы"->"airelec"), то выводит только для 3-ей родительской категории (например для "airelec"), то что позволяет код.
а вот как сделать что бы и 2-й уровень категории(например "конвекторы")цепляло?..
тут наверное без добавления в базу поля никак..