Перейти к содержимому


Делаем развесистый фильтр товаров (обкатка, написание, дополнения)


  • Вы не можете ответить в тему
Сообщений в теме: 469

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 February 2012 - 02:57 AM

Решение находится в процессе написания. Если у Вас не получилось ожидаемое, то либо Вы где-то допустили ошибку, либо я. Второе тоже запросто. Не надо стесняться писать об этом, оно всем на пользу будет :).

Last update: 06.04.2014

Основные свойства модуля:

- модуль заменяет штатный фильтр товаров, позволяя фильтровать не по одной характеристике из выпадающего списка,
а по любому набору характеристик. Также этот фильтр работает не только в категориях, а везде.

- убрана необходимость в каждой категории задавать набор характеристик для фильтра, теперь этот набор строится
автоматически на лету. Характеристики и min/max-цены берутся по всем товарам выбранной категории, включая вложенные
любого уровня и дополнительные категории.
Заданные в "Редактировать категорию->Расширенный поиск->Выбрать параметры" галочки и точечки ни на что не влияют.

- добавлена возможность каждой характеристике задать ее тип при показе в фильтре (произвольная строка, набор чекбоксов, движки, выпадающий список с чекбоксами),

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

- фильтров теперь три. Первый (основной) и два дополнительных. Они совершенно равноправны, но в реальности второй и третий
нужны как дополнительные фильтры для каких-либо отдельных характеристик. Например, "Фильтр по производителю".
Для каждого фильтра показ/непоказ характеристики задается отдельно.


Установка:


1. переписываем файлы

ui.dropdownchecklist.standalone.css -> data\[шаблон]\
ui.dropdownchecklist-1.4-min.js -> data\[шаблон]\

jquery.selectBox.js -> data\[шаблон]\ (нужен только для filter3.tpl.html)
select-button.png -> data\[шаблон]\ (нужен только для filter3.tpl.html)

jquery.tinyTips.js -> data\[шаблон]\
tinyTips.css -> data\[шаблон]\
q.png -> data\[шаблон]\

filter1.tpl.html -> core\tpl\user\[шаблон]\blocks\
filter2.tpl.html -> core\tpl\user\[шаблон]\blocks\
filter3.tpl.html -> core\tpl\user\[шаблон]\blocks\

advanced_search_in_category_ef.php -> core\includes\

addon.php -> core\includes\admin

Файл addon.php нужен ОДИН РАЗ для создания в таблицах новых полей.
После первого же захода в админку его можно удалить, если он не удалился сам.


2. В head.tpl.html вписываем линки на jquery-ui и css от него. Ну и на сам jquery, если он еще не вписан


{* BEGIN ExtraFilter *}
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
{* END ExtraFilter *}



3. в файле catalog_extra.php (если он не менялся, то можно просто переписать файл из архива поверх)

вместо строки


$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );


вставляем


# BEGIN ExtraFilter
#$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );
$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort", "extra_filter1", "extra_filter2", "extra_filter3", "extra_type" ) );
# END ExtraFilter



4. в файле catalog_extra.tpl.html (если он не менялся, то можно просто переписать файл из архива поверх)

4.1 перед строкой


<td align="left" class="toph3">{$smarty.const.ADMIN_VALUE_VARIANTS}</td>


вставляем


{* BEGIN ExtraFilter *}
<td align="left">Фильтр1</td>
<td align="left">Фильтр2</td>
<td align="left">Фильтр3</td>
<td align="left">Тип фильтра</td>
{* END ExtraFilter *}


4.2 перед строкой


<td align="left" valign="middle" class="toph3"><span style="float: right;">({$options[i].count_variants})</span><a href="{$smarty.const.ADMIN_FILE}?dpt=catalog&amp;sub=extra&amp;optionID={$options[i][0]}" class="inl">{$smarty.const.ADMIN_VALUE_VARIANTS}</a></td>


вставляем


{* BEGIN ExtraFilter *}
<td align="left"><input type="checkbox" class="round" name="extra_filter1_{$options[i].optionID}" {if $options[i].filter1}checked{/if} title="Показывать характеристику в первом фильтре"></td>
<td align="left"><input type="checkbox" class="round" name="extra_filter2_{$options[i].optionID}" {if $options[i].filter2}checked{/if} title="Показывать характеристику во втором фильтре"></td>
<td align="left"><input type="checkbox" class="round" name="extra_filter3_{$options[i].optionID}" {if $options[i].filter3}checked{/if} title="Показывать характеристику в третьем фильтре"></td>
<td align="left">
<select name="extra_type_{$options[i].optionID}" title="Показывать характеристику как чекбоксы, строку ввода, слайдер или селект">
<option value="0"{if $options[i].filter_type==0} selected{/if}>Чекбоксы</option>
<option value="1"{if $options[i].filter_type==1} selected{/if}>Строка</option>
<option value="2"{if $options[i].filter_type==2} selected{/if}>Слайдер</option>
<option value="3"{if $options[i].filter_type==3} selected{/if}>Селект</option>
</select>
</td>
{* END ExtraFilter *}




5. в файле option_functions.php

5.1 в функции optGetOptions ищем строку


$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps


и заменяем ее на


# BEGIN ExtraFilter
#$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps
$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants, ps.filter1, ps.filter2, ps.filter3, ps.filter_type FROM '.PRODUCT_OPTIONS_TABLE.' as ps


5.2 в функции optUpdateOptions ищем строку


"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);


и заменяем ее на


# BEGIN ExtraFilter
#"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);
"', sort_order=".(int)$val["extra_sort"].
", filter1=".(isset($val["extra_filter1"])?1:0).
", filter2=".(isset($val["extra_filter2"])?1:0).
", filter3=".(isset($val["extra_filter3"])?1:0).
", filter_type=".(isset($val["extra_type"])?$val["extra_type"]:0).
" where optionID=".(int)$key);
# END ExtraFilter



6. в файле product_functions.php

6.2 в функции _testExtraParametrsTemplate

6.2.1 перед строками


// get category ID
$categoryID = $template["categoryID"];


вставляем


# BEGIN ExtraFilter
if (isset($_GET["extrafilter"])){
global $efTemplate;
$variants = array();
$filter_type = array();
foreach( $efTemplate as $key => $item )
if((string)$key != "categoryID" && isset($item["optionID"]))
{
if (is_array($item['value'])) $variants[$item["optionID"]] = $item['value'];
elseif ($item['value']>0) $variants[$item["optionID"]][] = $item['value'];
if (isset($item['filter_type'])) $filter_type[$item["optionID"]] = $item['filter_type'];
}

if (!$count = count($variants)) return true;

$filter = array();
foreach( $variants as $key => $item )
{
if (isset($filter_type[$key]))
{
switch ($filter_type[$key])
{
case '0':
$filter[] = "pos.variantID IN (".implode(",",$item).")";
break;
case '1':
$filter[] = "pos.optionID=".$key." AND povv.option_value LIKE '%".$item[0]."%'";
break;
case '2':
if ($item[2] == 'on') $count--;
else $filter[] = "pos.optionID=".$key." AND FLOOR(povv.option_value)>=".$item[0]." AND CEIL(povv.option_value)<=".$item[1];
break;
case '3':
$filter[] = "pos.variantID IN (".implode(',',$item).")";
break;
}
}
}
$row=db_fetch_row(db_query("SELECT count(DISTINCT pos.optionID) AS count FROM ".PRODUCTS_OPTIONS_SET_TABLE." AS pos
LEFT JOIN ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." AS povv USING (variantID)
WHERE productID=".$productID. " AND (".implode(" OR ",$filter).")"));

return $row['count'] == $count;
}else{
# END ExtraFilter



6.2.2 перед завершающей функцию фигурной скобкой } вставляем


# BEGIN ExtraFilter
}
# END ExtraFilter


Должен получиться код

if (isset($_GET["extrafilter"])){
новый код функции
}else{
старый код функции
}



7. в файле category.php в функциях _getUrlToNavigate и _getUrlToSort

7.1 добавляем (там довольно очевидно куда - в блок аналогичных строк)


# BEGIN ExtraFilter
if ( isset($_GET["extrafilter"]) )
$url .= "&extrafilter=".$_GET["extrafilter"];
# END ExtraFilter


7.2 вместо


$url .= "&param_".$key;
$url .= "=".$val["param"];


вставляем


# BEGIN ExtraFilter
#$url .= "&param_".$key;
#$url .= "=".$val["param"];
if (is_array($val["param"])) foreach ($val["param"] as $vkey => $variant) $url .= "&param_".$key."[".$vkey."]=".$variant;
else $url .= "&param_".$key."=".$val["param"];
# END ExtraFilter



8. Подключаем в админке в "Управление блоками" основной фильтр (filter1.tpl.html) и ставим нужные галочки в "Характеристики товаров".
Второй фильтр (filter2.tpl.html) и третий фильтр (filter3.tpl.html) аналогично :).


9. проверяем, пишем о проблемах.

Работающий пример можно посмотреть тут.

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

PS. Ну и, естественно, спасибо всем, кто тем или иным образом принимал и принимает участие в доделывании этого фильтра. Matit, micehide, R.Sergey и другие, кого я мог забыть или кто еще примет участие в будущем.

Прикрепленные файлы

  • Прикрепленный файл  ExtraFilter.zip   29.39К   68 Количество загрузок:

  • 6
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 26 February 2012 - 10:07 PM

На тестовом сайте работает, надо себе попробовать поставить.
Возможно ли, чтобы после фильтрации товаров галочки в фильтре не обнулялись, а добавить кнопку "Очистить фильтр"
  • 0

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 26 February 2012 - 11:38 PM

На тестовом сайте работает, надо себе попробовать поставить.
Возможно ли, чтобы после фильтрации товаров галочки в фильтре не обнулялись, а добавить кнопку "Очистить фильтр"

Возможно. Но в порядке очередности, моего уровня знаний и моего видения данной надобности.

---------- Сообщение объединено ----------

Я в сомнениях. Толи ошибку в штатном коде нашел, толи что-то упустил у себя и код где-то-в-чем-то не штатный и не отрабатывает все, что положено.
В общем, если добавить новую категорию, то в ней по умолчанию активны все "характеристики товаров" и создается пучок записей в таблице "хххх_category__product_options". А если удалить категорию, то эти записи не удаляюятся, остаются висеть в базе. На работоспособность сайта это на влияет, но из этой таблицы выборка происходит довольно часто и "мертвые" записи там соувершенно ни к чему. Они еще и не проиндексированы, насколько я помню, т.е. насколько больше записей - ровно настолько медленнее процесс.

Лечение понятно и очевидно, одна SQL-команда, но подскажите, это и правда "недоработочка" автора или у меня что-то не так?

---------- Сообщение объединено ----------

Возможно. Но в порядке очередности, моего уровня знаний и моего видения данной надобности.

Я как-то коротко и невнятно ответил. Отвечаю шире. Несохранение "галочек" является результатом моего удивления, что "оказывется, все уже и так есть штатно". Т.е. в УЖЕ написанном автором CMS фильтре надо, по сути, просто поменять тип в теге input и соблюсти еще пару условий. И получаем куда более красивую картинку фильтра, чем штатно. Хотя функционально ровно ту же :). Сразу и написал, как это заметил. Естественно, замена этих двух строк требует дальнейшей доводки, понимания тонкостей и прочей шелухи. Но штатно и просто - вот.

Галочки (их сохранение) допишу позже. Это не самая интересная задача из имеющихся. Вы же бесплатно пользуетесь моими переделками? Вот и ждите, пока подойдет Ваша очередь.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 27 February 2012 - 03:43 PM

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

Это у всех так, если добавлять новую категорию из Админки. Если же добавлять через CSV-импорт, то никаких записей в "хххх_category__product_options" не производится...
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2012 - 07:45 PM

Это у всех так, если добавлять новую категорию из Админки. Если же добавлять через CSV-импорт, то никаких записей в "хххх_category__product_options" не производится...

Хм... Ошибочны, как я понимаю, оба варианта. В первом случае удаление категории должно вызвать и удаление ссылок (это просто, один delete where categoryID=. странно, что не сделано), а во втором логично было бы добавить в xxxx_category_product_options присутствующие в CSV опции, причем именно в том виде, в каком они есть в CSV, т.е. либо в варианте "слово", либо в варианте {слово1,слово2,слово3}. Ну да и фиг с ним, не сделано, так не сделано. Тем более, что в рамках этой темы оно должно стать не нужным вообще.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 27 February 2012 - 09:26 PM

Галочки (их сохранение) допишу позже. Это не самая интересная задача из имеющихся. Вы же бесплатно пользуетесь моими переделками? Вот и ждите, пока подойдет Ваша очередь.

Конечно подожду ))
Просто я участвую в общаке, думал что купят фильтр - но увы ((
Могу подкинуть интересных задач :D
  • 0

#7 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 27 February 2012 - 09:33 PM

Просто я участвую в общаке, думал что купят фильтр - но увы ((

К сожалению, нормальный фильтр не реализован ни одним независимым разработчиком (как оказалось), хотя предварительные описания функций доработанных фильтров вполне нас устраивали. Поэтому было решено отказаться от чрезмерно дорогостоящих услуг по доработке фильтра и: а) попробывать написать самостоятельно, б) искать другие варианты.

Могу подкинуть интересных задач

Тема для того и создана, чтобы разработать оптимальный (во всех смыслах) вариант фильтра.
  • 0

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2012 - 10:09 PM

Просто я участвую в общаке, думал что купят фильтр - но увы ((

Поверьте на слово - они не стоят своих денег. Чем больше я копаюсь в потрохах CMS-ки, тем больше в этом убеждаюсь. Либо я еще не до конца разобрался и не прав, ЧТО ТОЖЕ ЗАПРОСТО, либо штатный фильтр написан настолько через жопу (нет, не так - ЧЕРЕЗ ЖОПУ!), что написание нормального фильтра, с автоматическим созданием набора элементов и варантов фильтра не только не увеличит, а, возможно, даже уменьшит SQL-затраты.

Уж больно там через очко все сделано и надо понять почему. Либо в этом была надобность и "через очко" это не кривизна, а наилучшее решение по каким-то причинам, либо оно сделано "через очко" по банальной причине "просто так уж сделано". Собственно, частично поэтому и повисла такая пауза в каких-то модификациях :).

Пока, увы, ощущение, что advanced_search_in_category.php надо просто переписывать вообще. Целиком. Либо разбираться почти в каждой строчке, что я и пытаюсь сделать :(.

---------- Сообщение объединено ----------

Поэтому было решено отказаться от чрезмерно дорогостоящих услуг по доработке фильтра

Это меня очень удивило. Все скинулись по смешной сумме в ~10$. За "общий котел" давно можно купить готовый фильтр. Со своими готовыми фишками и решениями, бери и изучай. Вот прямо сейчас. Или бери и используй. Польза налицо для обоих (обеих?) групп пользователей общака - обычных пользователей и программеров. Не очень понимаю, почему так и не купили. Преполагается, что в конце-концов "общенаписуемый" фильтр будет лучше, но когда это будет? Покупка стороннего фильтра помогла бы в каких-то глобальных моментах и позволила бы не тратить время на мелочи. Как раз типа сохранения галочек после нажатия кнопки "подобрать". Да и по любому завсегда интересно сначала посмотреть, как оно у других сделано.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 27 February 2012 - 10:12 PM

ЧЕРЕЗ ЖОПУ!

наверное, так и есть

повисла такая пауза в каких-то модификациях

на оф. форуме обещают летом новую версию :)

Тема для того и создана, чтобы разработать оптимальный (во всех смыслах) вариант фильтра.

Хотелось бы, чтобы в каждой характеристике (или возможность настройки для каждой х-ки) вместо "не важно" был чек-бокс "Все". Если его выбрать - то все варианты для хар-ки выбираются, снимаем галочку - получается тоже самое "не важно"
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 27 February 2012 - 10:19 PM

Хотелось бы, чтобы в каждой характеристике (или возможность настройки для каждой х-ки) вместо "не важно" был чек-бокс "Все". Если его выбрать - то все варианты для хар-ки выбираются, снимаем галочку - получается тоже самое "не важно"

Расскажите, в чем разница между "не важно" и "любой из возможных"?
Кроме философской - философская разница огромна :)

PS. Только если для того, чтобы СНИМАТЬ ненужные галки вместо того, чтобы СТАВИТЬ нужные. Но это актуально когда галочек в выборе больше десятка, а я такого в фильтрах ни у кого из "больших" не помню.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 27 February 2012 - 10:24 PM

снимаем галочку - получается тоже самое "не важно"

Наверное, неправильно написал. :(
Но Вы, думаю, поняли, что я хотел сказать.

Так наглядней для покупателя - он видит, что выбраны все варианты. И легко может вначале выбрав "Все", снять галочку у одного значения. Это удобней, чем выбрать 9 из 10 значений характеристики товара. Могу дать ссылку на сайт, где так реализован фильтр.
  • 0

#12 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 28 February 2012 - 12:02 PM

Хотелось бы, чтобы в каждой характеристике (или возможность настройки для каждой х-ки) вместо "не важно" был чек-бокс "Все".

yura, нужно понимать, что оба варианта являются лишними. Ну зачем выдумывать то, что и так заведомо бесполезно? Более того, фильтр - это тот инструмент, который должен быть максимально понятен посетителю магазина с минимальным багажом знаний об электронной торговле, а вы хотите наворотить целую гирлянду всевозможных пересекающихся опций, к тому же еще, прибавляющих работы кодеру - (с) "возможность настройки для каждой х-ки".
  • 0

#13 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 12:13 PM

я не выдумываю. Вот пример такого фильтра - http://www.belmoda.ru/products
  • 0

#14 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 28 February 2012 - 12:26 PM

А теперь подумайте сколько человек моментально догадается, что нужно снять галку с позиции "Все", для того чтобы все позиции стали не активными, а уже затем можно спокойно выбрать один нужный ему бренд (к примеру)? Тем более здесь нарушена логика процесса - стоит галка "Все" и одновременно стоят галки на всех позициях - налицо дублирование одной и той же функции (нормальный человек сразу заподозрит, что данный фильтр работает некорректно).
  • 0

#15 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 12:54 PM

А теперь подумайте сколько человек моментально догадается, что нужно снять галку с позиции "Все", для того чтобы все позиции стали не активными, а уже затем можно спокойно выбрать один нужный ему бренд (к примеру)?

Мне кажется, что Вы недооцениваете людей :) Сайт этот в топ-20 на Рамблере и думаю, что большинство посетителей сайта справляются с этой задачей.


Тем более здесь нарушена логика процесса - стоит галка "Все" и одновременно стоят галки на всех позициях - налицо дублирование одной и той же функции (нормальный человек сразу заподозрит, что данный фильтр работает некорректно).

А мне кажется, что это наооборот очень наглядно и удобно. Сняв затем галку с одного или нескольких позиций легко исключить их из фильтрации. Для того, чтобы получить такой же вариант с помощью фильтра на тестовом сайте - нужно поставить, к примеру, 29 галок - если у характеристики 30 значений.
  • 0

#16 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 28 February 2012 - 01:12 PM

Мне кажется, что Вы недооцениваете людей Сайт этот в топ-20 на Рамблере и думаю, что большинство посетителей сайта справляются с этой задачей.

Мой золотой, ну как может позиция сайта в Рамблере влиять на понимание посетителями его фукциональности и внятности работы фильтра?

А мне кажется, что это наооборот очень наглядно и удобно

Скажите, много ли Вы встречали фильтров с именно такой реализацией (галкой среди галок) отметки всех характеристик в категории? Каковы ожидания пользователя при нажатии/отжатии этой галки? Если Вы хоть каплю заинтересованы в человеко-ориентированном магазине, удобном для посетителей, то должны понимать, что малейшая деталь управления, вызывающая сомнения у покупателя - это гвоздь в крышку гроба оного магазина. Породили сомнение - потеряли покупателя, т.к. он ушел в магазин, где ему все привычно и понятно.
  • 0

#17 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 02:30 PM

Ну кроме позиций в рамблере они еще занимают одно из первых мест по продажам в своем сегменте.
вот вариант в Вашей логике для "Все" http://www.biloni.ru/catalog.php . Может он и понятней (хотя и не факт), но пользоваться им неудобно.
Вот еще вариант - http://msopt.ru/catalog/list
А это без чекбоксов, примерно как существующий в shopCMS - http://uvinal.ru/catalog/odezhda/

Лично для меня, как покупателя, самый удобный фильтр здесь - http://www.belmoda.ru/products
  • 0

#18 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 28 February 2012 - 07:10 PM

Я дотра... эээ... домучил принципиальное начальное решение. Посмотреть можно как всегда тут., заодно проверите ЧПУ-шный редирект со ссылки типа category_1.html. Набор для фильтра строится из всех опций и вариантов товаров, которые есть в текущей и дочерней категориях, а также в "дополнительных категориях" товаров. Т.е. если товара с опцией "800х600" в данной категории (и ниже) нет, хотя сам выбор "разрешение" есть, то этой опции в фильтре и не будет. В ближайшее время причешу по мелочи и опубликую текст. Теперь настраивать фишки фильтра в настройках категории не надо.

---------- Сообщение объединено ----------

нужно понимать, что оба варианта являются лишними

Да черт его знает... Не уверен. Возможно, действительно, будет полезным сделать не только пимпу "не важно", но и пимпу "все". Сделать не сложно и меня расстраивает только то, что это ж ЕЩЕ ОДНА ПИМПОЧКА. Причем не одна, а по одной на каждый элемент фильтра. Либо надо как-то усложнять логику (хорошая, кстати, идея!), чтобы пимпочка "не важно" появлялась только в тех элементах, где вариантов выбора больше, скажем, пяти, а пимпа "все" - где вариантов больше десяти.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#19 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 28 February 2012 - 07:34 PM

а пимпа "все" - где вариантов больше десяти.

или сделать как переменную, которую можно было-бы по желанию где-нибудь менять.

Набор для фильтра строится из всех опций и вариантов товаров, которые есть в текущей и дочерней категориях, а также в "дополнительных категориях" товаров.

А можно будет, при необходимости (если ОЧЕНЬ много значений), установить для характеристики параметр "Задается произвольно" ?
  • 0

#20 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 29 February 2012 - 12:23 AM

В ближайшее время причешу по мелочи и опубликую текст

Опубликовал. Проверьте, у кого много товаров и характеристик, насколько он быстро работает или, наоборот, тормозит.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)