Вторая версия модуля расширенных фильтров (как в Яндекс.Маркете)

11 февраля 2016 года

Расширенные фильтры для HostCMS «Как в Яндекс.Маркете» уже пару лет известны многим HostCMS-разработчикам по этой теме на форуме.

Разработка оказалось востребована в сообществе, а потому живет и развивается, и я рад представить вашему вниманию вторую версию «Расширенных фильтров». Если попытаться совсем кратко описать ключевые отличия Вторых фильтров от первых, то получится так: Удобнее, Быстрее, Дешевле!

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

Ключевые отличия от первой версии:

  • Код наконец-то вынесен в отдельный модуль;
  • Добавлен инсталлятор;
  • Аналогичная функциональность по фильтрации реализована для инфосистем;
  • Сделано большое количество оптимизаций в разных местах кода;
  • Реализован новый алгоритм запросов к базе, использующий при построении выборок join к временной таблице вместо предиката IN к массиву идентификаторов, дающий на тяжелых базах ускорение до 10 раз;
  • Для тяжелых интернет-магазинов и инфосистем с большим количеством доп.свойств реализованы два дополнительных режима оптимизации для формирования узла shop_item_properties (informationsystem_item_properties) в xml: первая ограничивает набор выводимых в узле доп.свойств только теми, которые используются для построения фильтров; вторая ограничивает выводимые значения для списочных доп.свойств только теми элементами списков, которые применимы к текущей выборке. В зависимости от конфигурации вашего сайта эти два режима могут давать дополнительное ускорение в 4-5 раз.
  • Упрощено подключение стилей и скриптов в макетах
  • Упрощено подключение вывода фильтров в боковой колонке
  • Упрощена настройка ТДС фильтров, ключевые параметры, влияющие на работу фильтров доступны сразу при редактировании узла структуры, использующего ТДС Расширенных фильтров
  • Переписаны слайдеры;
  • Добавлена возможность выводить на клиенте кастомные всплывающие сообщения о кол-во найденных товаров/инфоэлементов;
  • Изменена политика лицензирования;
  • Оставлена частичная совместимость с фильтрами первой версии. В комплекте с модулем идет набор новых ТДС, новых XSL-шаблонов, образцы кода для вставки в макеты, а также новые клиентский js и css. При переходе с версии 1 на версию 2 ТДС необходимо поменять, остальные же части (XSL, js, css) подойдут и от первой версии;
  • Снижена цена!

Увидеть в действии

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

Демо работы с информационными системами можно увидеть на том же сайте в разделе «Услуги».

Системные требования

Модуль предназначен для работы с системой HostCMS версии 6.1.2 и выше*.

Системные требования модуля аналогичны системным требованиям тех версий HostCMS, под которыми он работает, никаких дополнительных требований использование модуля не накладывает.

* Два дополнительных режима оптимизации доступны начиная с версии системы 6.5.6 и выше, в версиях ниже они не включаются, но работу модуля не ломают.

Возможности модуля

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

Для информационных систем

  • Функциональность для инфосистем основана на базовом контроллере Informationsystem_Controller_Show, поэтому поддерживает все станадартные режимы и настройки;
  • Легко управляемый вывод элементов из групп и подгрупп: вы просто задаете глубину выборки в настройках узла структуры, все остальное модуль делает сам;
  • Несколько режимов сортировки: по умолчанию, по названию, по возрастанию рейтинга (оценки в комментариях), по популярности (просмотры), и по значениям доп.свойств;
  • Фильтрация по наличию основного изображения у инфоэлементов (большого, малого или любого);
  • Фильтрация по меткам (тегам);
  • Фильтрация по значениям дополнительных свойств, в том числе в сочетании с отбором инфоэлеметов по меткам (тегам);
  • В блоках фильтров при выводе доп.свойств типа «список» отображаются только те значения из списка, которые применимы к инфоэлементам в выборке;
  • В блоках фильтров при выводе доп.свойств типа «число» отображаются минимальное и максимальное значение доп.свойства, которые применимы к инфоэлементам в выборке;
  • Корректный учет ярлыков на инфоэлементы при вычислении фильтров во всех режимах фильтрации и отображения;
  • Простой вывод отдельного блока фильтров в боковой колонке;
  • Оптимизация вывода с помощью временных таблиц, а также два дополнительных оптимизирующих режима при формировании xml;
  • Два режима работы при изменении пользователем параметров фильтров — мгновенная перезагрузка странцы с применением параметров или предварительный подсчет числа подходящих инфоэлементов через быстрый ajax-запрос;
  • Кастомные тексты всплывающих сообщений при отображении результатов ajax-запросов, настраиваются просто в параметрах узла структуры при выборе ТДС Расширенных фильтров.

Для интернет-магазинов

  • Функциональность для интернет-магазинов основана на базовом контроллере Shop_Controller_Show, поэтому поддерживает все станадартные режимы и настройки;
  • Легко управляемый вывод элементов из групп и подгрупп: вы просто задаете глубину выборки в настройках узла структуры, все остальное модуль делает сам;
  • Два режима построения набора разрешенных доп.свойств при выводе из нескольких групп: строгий (только те доп.свойства которые есть у всех товаров в выборке) и не строгий (все доп.свойства, которые есть хотя бы у одного товара в выборке);
  • Несколько режимов сортировки: по умолчанию, по названию, по цене, по наличию, по возрастанию рейтинга (оценки в комментариях), по популярности (просмотры), и по значениям доп.свойств;
  • Фильтрация по основным свойствам — наличие, производитель, продавец, по диапазону цен, по диапазону габаритных размеров (длина, ширина и глубина в отдельности);
  • Фильтрация по наличию основного изображения у инфоэлементов (большого, малого или любого);
  • Фильтрация по значениям дополнительных свойств, в том числе в сочетании с отбором инфоэлеметов по меткам (тегам);
  • В блоках фильтров при выводе доп.свойств типа «список» отображаются только те значения из списка, которые применимы к товарам в выборке;
  • В блоках фильтров при выводе доп.свойств типа «число» отображаются минимальное и максимальное значение доп.свойства, которые применимы к товарам в выборке;
  • Корректный учет ярлыков на товары при вычислении фильтров во всех режимах фильтрации и отображения;
  • Корректный учет модификаций при вычислении фильтров во всех режимах фильтрации и отображения;
  • Настраиваемый режим вывода модификаций и родительских товаров, удовлетворящих условиям фильтра: выводить только родительские товары (даже если фильтру удовлетворяют только модификации), выводить родительские товары и подходящие модификации, выводить только модификации вместо и на уровне родительских товаров, если родительские товары не удовлетворяют условиям фильтра, а модификации удовлетворяют;
  • Корректный учет скидок при фильтрации и сортировке по цене;
  • Корректная обработка товаров с ценами, номинированными в разных валютах, при фильтрации и сортировке по цене;
  • Простой вывод отдельного блока фильтров в боковой колонке;
  • Оптимизация вывода с помощью временных таблиц, а также два дополнительных оптимизирующих режима при формировании xml;
  • Два режима работы при изменении пользователем параметров фильтров — мгновенная перезагрузка странцы с применением параметров или предварительный подсчет числа подходящих инфоэлементов через быстрый ajax-запрос;
  • Кастомные тексты всплывающих сообщений при отображении результатов ajax-запросов, настраиваются просто в параметрах узла структуры при выборе ТДС Расширенных фильтров;
  • Совместимость с Модулем подписки на товары, отсутствующие в наличии.

Лицензионная политика

Модуль «Расширенные фильтры» предназначен для коммерческой реализации заказчикам сайтов, веб-студиям, интеграторам и прочим третьим лицам (далее — Покупатели).

Реализацию модуля могут осуществлять разработчик модуля, а также дилеры, с которыми у разработчика заключено соответствующее соглашение (далее — Дистрибьюторы)

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

То есть, одна лицензия на модуль интеграции с сервисом «Покупка на Яндекс.Маркет» выдается на один номер договора на установку системы HostCMS на сервер, и покрывает неограниченное количество сайтов и магазинов на этом экземпляре системы.

Дистрибутив модуля и лицензионный ключ доступны Покупателю после оплаты лицензии, и передаче Дистрибьютору модуля следующих данных:

  • Логин, к которому привязана лицензия HostCMS;
  • md5-хеш от номера договора;
  • md5-хеш от пин-кода.

В ответ на эти данные, Дистрибьютор предоставляет Покупателю архив с исходным кодом модуля и инструкцию по его установке. Лицензионные ключи будут сгенерированы и встроены в систему автоматически, в момент установки модуля.

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

Важно Работы по настройки модуля на сайте (сайтах) Покупателя в состав лицензии не входят, но при необходимости могут быть заказаны у Дистрибьюторов с отдельной оплатой.

Важно Пользователям HostCMS редакции Халява, перед покупкой и установкой Модуля, необходимо получить бесплатную лицензию в Личном кабинете на сайте http://hostcms.ru (в разделе Личный кабинет — Лицензии), а затем внести полученные данные в Центре администрирования системы, в раздел «Сайты» — «Настройки» — «Регистрационные данные».

Стоимость и ценовая политика

Приобретение модуля

Розничная стоимость одной лицензии на модуль составляет 3 500 рублей.

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

Для Дилеров модуля — специальные ценовые предложения, обсуждаемые индивидуально.

Обновление в пределах текущей версии

Приобретая модуль версии 2.х вы получаете бесплатные обновления модуля в пределах текущей мажорной версии, т.е. на любую следующую версию ветки 2.х

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

Обновление с предыдущих версий

Обновление модуля с версий 1.х платное. При обновлении также применяются изменения лицензионной политики. Если вы ранее приобретали у меня модуль версии 1.х, то вы имеете право на одну льготную лицензию за 1 900 рублей, для установки на один экземпляр системы HostCMS. Вторая и последующие лицензии приобретаются на общих основаниях, по цене 2 500 рублей за одну лицензию.

Установка модуля

Для установки модуля в систему вам нужно:

  1. Развернуть архив на вашем компьютере, и содержимое папки files скопировать по ftp в корень вашей установки HostCMS.
  2. Затем в центре администрирования перейти в раздел «Модули», выбрать в меню «Добавить», в поле название модуля указать Расширенные фильтры в поле путь к модулю указать extendedfilters галочку Активности не включать.
  3. Нажать на применить.
  4. Затем найти этот модуль в списке модулей и зажечь у него лампочку активности.
  5. После этого запустится инсталлятор, который получит лицензионный ключ, выполнит запросы к базе, разложит куда нужно файлы стилей и скриптов, создаст новые разделы в ТДС и в XSL, а также добавит в разделе макеты, код с примерами подключения.

Для подключения фильтров на вашем сайте вам нужно:

  1. В главный макет, в секцию head добавить код, подключающий скрипты и стили фильтров (пример кода появится после установки в разделе «макеты»)
  2. В структуре сайта войти в редактирование раздела нужного узла структуры и сменить ему ТДС и XSL-шаблон каталога товаров (списка инфоэлементов) на те, которые идут в комплекте с модулем.
  3. При необходимости, на этой же странице внести изменения в настройки работы модуля фильтров.
  4. Если вам нужен фильтр сбоку, то вам нужно зайти в редактирование соответствующего макета, и заменить код, который выводит фильтр сбоку, на тот, который идет в примерах макетов вместе с модулем.

Важно Если у вас были какие-то доработки в вашей ТДС магазина, то их нужно будет перенести в ТДС фильтров. Обратите внимание на то, что доработки из вкладки «Код ТДС» скорее всего нужно будет переносить во вкладку «Настройки ТДС», иначе он может работать некорректно (внимательно читайте комментарии в ТДС фильтров).

Важно XSL-шаблоны фильтров не полностью совместимы со стандартными шаблонами «МагазинКаталогТоваров» и «МагазинФильтр», т.к. для работы фильтров необходимо использовать более сложный XML с данными. Но чаще всего достаточно просто скопировать из ваших XSL-шаблонов темплейты, формирующие товары и группы товаров.

Разработчики модуля

Разработчиком и майнтейнером модуля «Расширенные фильтры» для HostCMS v.6 является Стриго Евгений Васильевич (известный также как Евгений Котов).

Все права на код Модуля и сопровождающую его документацию исключительно принадлежат только Разработчику.

Официальным и единственно верным способом связи с Разработчиком по любым вопросам является электронная почта james.kotoff@gmail.com

Порядок оказания технической поддержки и разрешения спорных вопросов

Разработчик оказывает техническую поддержку только Дистрибьюторам модуля, а также Покупателям, приобретавшим модуль лично у него. Покупателям, приобретавшим модуль у других Дистрибьюторов за технической поддержкой необходимо обращаться к тому Дистрибьютору, у которого они приобрели модуль.

Разработчик участвует в разрешении спорных вопросов только с Покупателями, приобретавшим модуль лично у него. Покупателям, приобретавшим модуль у других Дистрибьюторов за разрешением спорных вопросов необходимо обращаться к тому Дистрибьютору, у которого они приобрели модуль.

Модуль предоставляется «Как есть», разработчик не несет ответственности за любой ущерб, полученный покупателем в результате приобретения и/или использования данного модуля.

В состав технической поддержки входит устранение выявленных и стабильно воспроизводимых ошибок в работе Модуля. Устранение таких ошибок производится бесплатно, за исключением следующих случаев:

  • ошибки, возникшие в результате неверных действий интегратоорв, администраторов, веб-мастеров конкретного сайта;
  • ошибки, возникшие в результате нарушения Покупателем вышеизложенной лицензионной политики Модуля.

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

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

Спасибо за приобретение и использование модуля Расширенных фильтров для HostCMS!

Версия документа 1.0 от 11 февраля 2016 г.

P.S. Разработчик выражает свои благодарности за участие в разработке этого модуля: коллективу компании Хостмейк и лично Борису Теряеву, команде KAD Systems и лично Артему, Олегу Сидельникову за отлов ошибок, Николаю Ковальчуку за мотивацию к работе над второй версией, Вадиму Писанову за вынужденное вдохновение к оптимизации алгоримов.