Традиционное спасибо всем, кто помогал мне (явно или путем сообщения об ошибках) в предыдущем фильтре. Без него не было бы этого.Советы, рекомендации, пожелания, сообщения об ошибках продолжают приветствоваться.
Краткое описание:
-----------------
- Как и предыдущий этот фильтр не требует в каждой категории задавать список разрешенных к показу характеристик, а строит этот список сам суммируя характеристики всех товаров категории.
- Как и предыдущий этот фильтр работает ТОЛЬКО с характеристиками товаров, заданными в виде вариантов характеристик. Т.е. с характеристиками в виде текстовой строки этот фильтр НЕ РАБОТАЕТ.
- При установке-снятии галки на лету меняются количественные показатели у остальных вариантов выбора.
Варианты с "нулевым" количеством товаров дизаблятся.
- При перемещении движка цен аналогично, но "нулевые" варианты не дизаблятся, а убираются.
- выборка товаров (показ результата работы фильтра) делается сразу по нажатию любой галки.Точнее, по изменению любого элемента формы, т.е. галки чекбокса, движков, вида сортировки, количества товаров на странице. Но это отключаемо и изначально отключено (галка "Автопоказ").
- Я не стал (пока?) делать в этом фильтре изыски предыдущего (тип выбора - чекбосы, строка, селект, движки ).
По фактам установки предыдущего фильтра у меня сложилось уверенное впечатление, что никто этими возможностями не пользуется кроме заказчика возможности . А все остальные просто оставляют дефолтовые чекбоксы, это самое удобное.
По сути, преимуществ перед штатным у этого фильтра всего два - выбор более одного варианта для характеристики и получение результата тут же, без нажатия кнопки "Показать" и перезагрузки страницы.
Ну а задание показа/непоказа характеристик в кратком/полном описаниях, бывшее в предыдущем фильтре и вообще к фильтру не относится, есть отдельный модуль на эту тему.
Установка проста до безобразия:
-------------------------------
1. копируем файлы (они не совпадают по имени со штатными, можно смело копировать).
filter.php -> core/includes/processor/
filter.tpl.html -> core/tpl/user/[шаблон]/
filter_new.tpl.html -> core/tpl/user/[шаблон]/blocks
jquery.blockui.js -> data/[шаблон]/
jquery.form.js -> data/[шаблон]/
loading.gif -> data/[шаблон]/
2. В head.tpl.html вписываем линки на jquery-ui и css от него. Ну и на сам jquery, если он еще не вписан
<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>
3. в файле index.php
строку
if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file" ))) {
заменяем на
# BEGIN filter-ajax
#if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file" ))) {
if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file", "filter" ))) {
# END filter-ajax
4. в файле index.tpl.html задаем, куда и как выводить результат работы фильтра,
замещающий все содержимое блока с id="filterResult".
Например, если строки
{* вывод центральной страницы *}
{include file="$main_content_template"}
заменить на
<div id="filterResult">
{* вывод центральной страницы *}
{include file="$main_content_template"}
</div>
то список отфильтрованного выведется вместо основного содержимого сайта, но верхние и нижние блоки останутся.
А если заменить
{* верхние блоки *}
{include file="blocks.tpl.html" binfo=$top_blocks bclass="hdbtop" balign="left"}
{* вывод центральной страницы *}
{include file="$main_content_template"}
{* нижние блоки *}
{include file="blocks.tpl.html" binfo=$bottom_blocks bclass="hdbtop" balign="left"}
на
<div id="filterResult">
{* верхние блоки *}
{include file="blocks.tpl.html" binfo=$top_blocks bclass="hdbtop" balign="left"}
{* вывод центральной страницы *}
{include file="$main_content_template"}
{* нижние блоки *}
{include file="blocks.tpl.html" binfo=$bottom_blocks bclass="hdbtop" balign="left"}
</div>
то список отфильтрованного заместит все центральное содержимое.
5. Создаем в "Управлении блоками" через "Добавить блок из файла" новый блок из файла filter_new.tpl.html
Посмотреть, как это работает можно на http://cpu.badisoft.ru - слева ниже большой красной кнопки "мобильная версия" есть блок "Новый фильтр на Аяксе" и в нем кнопка "Развернуть".