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


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


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

#41 gsm-group

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

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

Отправлено 09 March 2012 - 04:52 PM

Точка не ставиться в кружочке, на кнопочке "ВСЕ"
  • 0

#42 badisoft

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

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

Отправлено 09 March 2012 - 05:28 PM

Точка не ставиться в кружочке, на кнопочке "ВСЕ"

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

#43 panv

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

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

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

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

#44 badisoft

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

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

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

Минимальная и максимальная цена берется учитывая все товары в группе не смотря даже на остаток на складе равный нулю

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

при выборе определенных условий фильтрации она остается неизменной.

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

Смотрите на это несколько с другой стороны - как на один из элементов фильтра, параметры которого можно менять (двигая движок либо ставя галочки/точечки), но весь набор выбора (галочек-точечек-диапазона) остается неизменным, т.е. при необходимости можно РАСШИРИТЬ выбор для каждого элемента фильтра.

В случае того, что просите сделать Вы расширить выбор (он же будет сужаться, правда?) можно будет только общим сбросом ВСЕХ фильтров (на тест.сайте это кнопка ResetAll, в шапке пока ее нет) либо придется делать отдельную кнопку "восстановить стартовый диапазон цен" для движков цен. А по хорошему тогда уж и для все остальных элементов исключая недоступные в текущем результате фильтрации варианты.

Для "галочных" элементов фильтра так и предоплагается сделать в конце концов, т.е. "как у больших", только они не пропадать будут, а дизаблиться. С движками оптимально было бы сделать аналогично - оставить стартовый диапазон цен, но disable не попадающих в результат фильтрации участков движка. Т.е. чтобы движки просто было не сдвинуть "шире доступного". К сожалению, использумая js-функция slider из библиотеки query-ui такую фишку сделать не позволяет, так что идея хорошая, но реализуемая весьма не скоро.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#45 panv

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

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

Отправлено 10 March 2012 - 04:36 PM

Счетчик ({$params[i].variants[j].count}) тоже отображает общее кол-во товара из базы, Не показывать товары которых нет на складе, Отключать товар если он закончился на складе галочка стоит.
  • 0

#46 badisoft

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

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

Отправлено 10 March 2012 - 04:53 PM

Счетчик ({$params[i].variants[j].count}) тоже отображает общее кол-во товара из базы, Не показывать товары которых нет на складе, Отключать товар если он закончился на складе галочка стоит.

Это очевидно, ведь если я пишу, что "это несложно сделать", значит это еще не сделано, т.е. нулевое количество товаров на складе (и, как следствие, состояние относящейся к этому галочки) никак не принимается во внимание.

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

#47 badisoft

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

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

Отправлено 11 March 2012 - 04:25 PM

Минимальная и максимальная цена берется учитывая все товары в группе не смотря даже на остаток на складе равный нулю

Сделано. Теперь фильтр строится принимая во внимание галки "Вести учет товаров на складе" И "Не показывать товары которых нет на складе". Товары с нулевым количеством не будут участвовать в фильтре если установлены ОБЕ галки. Вечером выложу.

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

Отличия от предыдущей версии в advanced_search_in_category.php:
1. после
$catIDs = implode(",",recursiveCat($categoryID));

добавить
$conf = db_query("SELECT settings_value FROM ".SETTINGS_TABLE." WHERE settings_constant_name IN ('CONF_CHECKSTOCK','CONF_SHOW_NULL_STOCK')");
$showNullStock = ' AND p.in_stock > 0 ';
while ($row = db_fetch_assoc($conf)) if (!$row['settings_value']) $showNullStock = "";

2. строку
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.')) AND variantID='.$row['variantID']));
исправить на
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.')) AND variantID='.$row['variantID'].$showNullStock));
3. строку
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.'))');
исправить на
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.'))'.$showNullStock);

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

#48 badisoft

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

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

Отправлено 11 March 2012 - 07:07 PM

Вопрос:
В штатном filter.tpl.html для кнопочки "Показать" сделана такая конструкция:

<div align="left">
<table cellspacing="0" cellpadding="0" class="fsttab">
<tr>
<td>
<table cellspacing="0" cellpadding="0" class="sectb">
<tr>
<td><a href="#" onclick="validate_search(this); return false">{$smarty.const.VIEW_BUTTON}</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

на мой вгляд она на ура заменяется (что и сделано)

<input type="button" value="{$smarty.const.VIEW_BUTTON}" onclick="validate_search(this); return false">


Вопрос традиционен: чего я не вижу, чего я не понимаю, по какой причине автор городил этот HTML-код вместо input type="button" ?

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

Вечером выложу.

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

#49 eugene_wb

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

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 11 March 2012 - 07:09 PM

чего я не вижу, чего я не понимаю, по какой причине автор городил этот HTML-код вместо input type="button"

таблицами оформлен стиль ссылки в виде кнопки, тоесть городилось это для нешнего вида.
  • 0
Изображение Изображение Изображение

#50 badisoft

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

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

Отправлено 11 March 2012 - 07:17 PM

таблицами оформлен стиль ссылки в виде кнопки, тоесть городилось это для нешнего вида.

Хм... А смысл-то в чем? Если бы оно городилось таблицей чтобы сделать в виде чего-то... эээ.. этакого - было бы понятно. Можно было сделать кнопку, но автор решил сделать поразвесистее и покрасивее, потратив еще 10 строк и 100байт. А тут-то как раз сделано максимально похоже на собственно кнопку. Я потому и спрашиваю, чего я такого не понимаю? :)

Пока пришло в голову только то, что, возможно, в других шаблонах с другим css input-type-button не покатит, а такое решение автоматически впишется в штатный дизайн шаблона (кнопка сразу в штатной палитре), но как-то оно от лукавого. Хотя бы потому, что filter.tpl.html не един для всех шаблонов, а в каждом шаблоне свой, т.е. переписывай-не-хочу.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#51 panv

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

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

Отправлено 11 March 2012 - 07:30 PM

Сделано. Теперь фильтр строится принимая во внимание галки "Вести учет товаров на складе" И "Не показывать товары которых нет на складе". Товары с нулевым количеством не будут участвовать в фильтре если установлены ОБЕ галки.

Фильтр цены срабатывает, характеристики тоже подсчет верный, есть у меня такая характеристика как производитель, так вот отображает бренд и в скобках кол-во 0 пример ROLSEN (0)
  • 0

#52 badisoft

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

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

Отправлено 11 March 2012 - 08:06 PM

Фильтр цены срабатывает, характеристики тоже подсчет верный, есть у меня такая характеристика как производитель, так вот отображает бренд и в скобках кол-во 0 пример ROLSEN (0)

Завтра на свежую голову я подумаю на этой фразой. Глядишь, чего и вычленится разумного. Сейчас просто нифига не понял. Либо попробуйте написать как-то... эээ... по другому, чтоли.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#53 panv

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

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

Отправлено 11 March 2012 - 08:10 PM

Вид сбоку. Отображает дополнительную характеристику и рядом значение - 0
Изображение
  • 0

#54 badisoft

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

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

Отправлено 11 March 2012 - 08:21 PM

Вид сбоку. Отображает дополнительную характеристику и рядом значение - 0

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

#55 panv

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

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

Отправлено 12 March 2012 - 07:43 AM

Да, совершенно верно, а то получается не логично, зачем клиенту видеть то, чего нет.
  • 0

#56 badisoft

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

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

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

Вид сбоку. Отображает дополнительную характеристику и рядом значение - 0

Мне не удалось такого добиться, но я понял, в чем дело. В шапке присутствуют все исправления, а описывая отличия я одно исправление упустил. Видимо, Вы изменяли файл не "целиком из шапки", а из сообщения об отличиях. Короче, вот "забытое" отличие от предыдущей версии:
строку
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.'))
заменить на
WHERE p.enabled=1 AND (p.categoryID IN ('.$catIDs.') OR cp.categoryID IN ('.$catIDs.'))'.$showNullStock.'
мои извинения.

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

Опаньки! А ведь не проверив ляпнул. В шапке-то тоже этого исправления нет!
Исправил.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#57 yura

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

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

Отправлено 12 March 2012 - 11:20 PM

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

И снова я со своими баранами ))
1. есть характеристика по которой не нужно фильтровать товар - можно ее будет в фильтре не показывать?
2. есть характеристика (цвет) у которой больше ста возможных значений - можно ли для нее произвольную строку в фильтр вставить (вместо чек-боксов)?
  • 0

#58 badisoft

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

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

Отправлено 12 March 2012 - 11:59 PM

1. есть характеристика по которой не нужно фильтровать товар - можно ее будет в фильтре не показывать?

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

2. есть характеристика (цвет) у которой больше ста возможных значений - можно ли для нее произвольную строку в фильтр вставить (вместо чек-боксов)?

Опять же надо придумать, как это по человечески реализовать. Мне пока не приходит в голову ничего кроме "если вариантов параметра больше NN, то используем произвольную строку вместо чекбоксов". И в функции _testExtraParametrsTemplate надо будет как-то этот момент отрабатывать более сложным SELECT-ом.

PS. Упс! У Главной категории нет возможности редактирования :). Значит, будет "в этой категории и низлежаших". "В этой" - легко. "В низлежащих" - чтобы в каждой дочерней галочки проставлять не пришлось - сложнее, но тоже решаемо.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#59 Сирик

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений
Репутация: 0
Начинающий

Отправлено 13 March 2012 - 11:54 AM

Что-то не работает бегунок от подбора по цене. точнее его просто нет. В каком месте копать? :)
  • 0

#60 badisoft

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

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

Отправлено 13 March 2012 - 03:00 PM

Что-то не работает бегунок от подбора по цене. точнее его просто нет. В каком месте копать

Необходимые для вывода бегунка ява-библиотеки грузятся в head.tpl.html
Ява-функция вывода бегунка (использующая эти библиотеки) находится в filter.tpl.html
Нахождение min-max-значений для бегунка происходит в advanced_search_in_category.php

Ну а смотреть, как всегда, в логи. Редко когда при некорректной работе чего либо в логах нет сообщений о какой-либо ошибке.

PS. filter.tpl.html и так целиком из рабочего модуля запощен, а advanced_search_in_category.php я только что ради чистоты проверки изменил именно "из шапки" - у меня все работает.

PPS. Думаю, что у Вас какие-то проблемы с работой ява-функции, т.к. даже если min-max-значения будут находиться неверно или не находиться вообще, то сам движок все равно будет появляться, просто с неверными значениями.

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

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