Автор Тема: Фильтр в категориях  (Прочитано 7173 раз)

nictboom

  • Гость
Фильтр в категориях
« : Сентября 12, 2011, 10:54:07 pm »
Возник вопрос: как реализовать идею при выборе категории , что бы появлялись параметры (доп.параметры) относящиеся к этой категории/товарам?
Для себя решил "косяво"(через доп. поля в базе).
Есть идеи?
У меня была идея:  добавить в PRODUCT_OPTIONS поле categoryID(или попроще), и потом при редактировании параметра, добавлять ID категории.
И при выборе категории, через условие, вылазиют параметры, те которые к ней(или товару) относятся.
как то так, если правильно объяснил...

nictboom

  • Гость
Re: Фильтр в категориях
« Ответ #1 : Сентября 13, 2011, 12:20:45 am »
не slamm, эт понятно.
примером может служить любой солидный ресурс, в котором зайдя в категорию, ты видишь только фильтр относительно данной категории/товара.
У себя же я максимум решил добавив в категорию и в родительский доп.параметр "сводящее звено", хотя это тупенько.
Достаточно добавить в родительский доп.параметр помимо productID ещё и categoryID(именно при редактировании параметра, ...я не смог своять чёт фукнцию :( ) и условием отбирать в фильтре: {if $option.categoryID==$selected_category[0]}.."параметры относящиеся к данной категории"..{/if}
ps забыл добавить: фильтр по доп.парам. у меня выведен отдельно в блок.
вот мой, пример tehnoboom/com/ua (категории: кондиционеры и конвекторы)
« Последнее редактирование: Сентября 13, 2011, 01:01:24 am от nictboom »

nictboom

  • Гость
Re: Фильтр в категориях
« Ответ #2 : Сентября 13, 2011, 03:29:50 pm »
я просто не знаю как вытянуть доп.параметры из таблицы PRODUCT_OPTIONS_TABLE для определённой категории/товара, не вижу привязки. для PRODUCT_OPTIONS_VAL_TABLE есть общее - productID.

nictboom

  • Гость
Re: Фильтр в категориях
« Ответ #3 : Сентября 16, 2011, 12:29:17 am »
Серёга, спасибо за наводку. ;)
вроде получилось. всё же остаются вопросы.
вот пример рабочего 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-й уровень категории(например "конвекторы")цепляло?..
тут наверное без добавления в базу поля никак..
« Последнее редактирование: Сентября 16, 2011, 12:48:05 am от nictboom »