Coder Social home page Coder Social logo

efilter's Introduction

author webber ([email protected])

набор eFilter - автоматическое построение фильтров товаров в MODx Evo (версия 0.1)

DONATE


если считаете данный продукт полезным и хотите отблагодарить автора материально, либо просто пожертвовать немного средств на развитие проекта - можете сделать это на любой удобный Вам электронный кошелек в системе Webmoney
WMR: R133161482227
WMZ: Z202420836069
с необязательной пометкой от кого и за что именно :)

содержит:

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

обязательные дополнительные компоненты (без их установки решение не работает):

  • сниппет DocLister
  • компонент multiTV
  • сниппет DocInfo

установка

  1. установить необходимые компоненты (модуль, плагин, сниппеты). Также скопировать конфигурацию для multiTV (\assets\tvs\multitv\configs\tovarparams.config.inc)
  2. создать специальный TV с именем tovarparams, описание - Параметры товара, тип ввода - CustomInput, возможные значения @INCLUDE assets/tvs/multitv/multitv.customtv.php и присвоить этот tv всем шаблонам-категориям товара
  3. создать шаблон для вывода товара
  4. Включить 'общие' параметры в настройках модуля и добавить зависимости Plugins tovarParams

Snippets eFilter eFilterResult multiParams tovarParams

  1. Отредактировать параметры настройки модуля - &param_tv_id=ID TV параметров товара;string; &product_templates_id=ID шаблонов товара;string; &param_cat_id=ID категории параметров;string; &exclude_tvs_from_list=Не включать ТВ в параметры при выводе;string; &tovarChunkName=Имя чанка вывода товара;string; где &param_tv_id - id tv в котором размещается вызов multiTV для настройки параметров товара (созданный в пункте 2) &product_templates_id=ID шаблонов товара - они общие для всех видов товаров (может быть несколько через запятую) &param_cat_id=ID категории параметров (фильтруемые параметры TV и просто параметры для товаров в TV должны быть помещены для идентификации в отдельную категорию/категории - например "Параметры товара" - id этой категории и необходимо сюда внести это очень важно &exclude_tvs_from_list=Не включать ТВ в параметры при выводе - т.к. изначально в списке параметров будут выведены все параметры для данного типа товара из категории "Параметры товара", то можно его проредить, убрав ненужные ТВ (например цена, наличие и другие общие параметры для всех товаров которые можно вывести отдельно) &tovarChunkName=Имя чанка вывода товара;string - имя чанка вывода товара в список (используется вместо задания &tpl)

  2. Для каждой категории товаров можно настроить в TV "Параметры товара" из multiTV свой набор для параметров товара

  3. На страницах категорий товаров, где необходим фильтр разместить вызов сниппета [!eFilter!] (либо [!eFilter? &tv_config=[*tovarparams*]!], где tovarparams - это имя TV, в котором хранится json-конфиг из multiTV - это ускоряет обработку), затем - в нужном месте шаблона плейсхолдер для вывода формы фильтра [+eFilter_form+] и сниппет для вывода результата например

    Дополнительные параметры вызова сниппета eFilter &hide_zero=1 - если не указан, то при отсутствии вариантов показывает в количестве найденных 0, если указан - ничего не показывает &remove_disabled=1 - удалять варианты с нулевым результатом из списка возможных (по умолчанию - 0 - варианты в списке остаются с атрибутом disabled) &ajax=1 - режим ajax - подгрузка формы и результатов поиска после сабмита формы поиска без перезагрузки страницы (по умолчанию - отключен) в режиме ajax три callback-функции javascript - beforeFilterSend(_form) - исполняется до отправки состояния формы на сервер - afterFilterSend(msg) - исполняется после получения ответа от сервера msg - afterFilterComplete(_form) - исполняется после обновления фильтра и результатов поиска из ответа на сервере

     [!eFilterResult? &parents=`[*id*]` &depth=`3` &paginate=`pages` &display=`15` &tvList=`image,price`!]
    
     [+pages+]
    
     в данном сниппете используется DocLister, собственно, параметры вызова аналогичны.
     В чанке вывода товара в список &tpl плейсхолдер [+params+] будет заменен на список установленных для данной категории товаров параметров товара
     В параметре &tvList=`image,price` включаем нужные параметры из других категорий, а также общих tv-параметров для всех видов товаров
    
  4. У нужном месте шаблона вывода товара (он у нас общий для всех видов товаров) помещаем вызов сниппета [[tovarParams]] для вывода нужного списка нужных ТВ из категории "Параметры товара" (id этой категории задан в модуле и он важен для всей работы).

  5. Для удаления недоступных для выбора вариантов надо вызывать фильтр с параметром &remove_disabled=1 - [!eFilter? &remove_disabled=1!]

Примеры

http://efilter.sitex.by/odezhda/muzhskaya/ http://efilter.sitex.by/aksessuary/aksessuary-dlya-odezhdy/solncezashhitnye-ochki/

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

Сотрудничество:


По вопросам сотрудничества обращайтесь на электронный ящик [email protected]

efilter's People

Contributors

webber12 avatar

Watchers

James Cloos avatar D.Tsombolov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.