eFilter - новый функционал


Для установки выбрать версию 0.2d
Обновил существующий функционал eFilter, так как приходилось сильно допиливать для текущих требований.
demo здесь: demo.evoshop.pro/
Сделано:
  • Автоинстал
  • Полный ajax
  • Админка для настройки фильтров
  • Переписано js и вынесен в низ страницы
  • Добавлен новый сниппет сортировки.
  • Добавлена подгрузка товаров по ajax
  • Добавлено блок для удаления выбранных фильтров.
  • Добавлено склонение слова товар в количестве (при фильтрации по ajax меняется)
Далее или сделаю пулл в репозиторий, или буду дальше поддерживать. Здесь решения за webber.
В течение недели в плане написать документацию.

24 комментария

avatar
Нужен мануал от А до Я, прям с самого начала как заставить это все работать.
avatar
Завтра начну доку с этого писать
avatar
Демо так и не работает, а глянуть-то интересно :)
avatar
Востановили демку
avatar
описка в коде

$fields = [
    'enable_sharedparams'=>1,
];

в файле plugin.filter_install.php
avatar
Установил с нуля.
Версия MODX 1.2.1-d9.1.5
PHP Version 7.0.10
Версия базы данных: 5.7.15
Cразу в управление пакетами, ставлю eFilter (snippets) версия 0.2d
Обновляю по F5, вижу eFilter и eLists.

eLists с ошибкой
SQL > CREATE TABLE IF NOT EXISTS `oprica`.`modx_list_catagory_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sort` int(5) NOT NULL DEFAULT '0', `title` text NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
С утра не могу победить подскажите что не так делаю.
avatar
Не знаю опечатка ли, но в общем поправил в файле eLists.class.php
строка 51
было `title` text NOT NULL DEFAULT '',
стало `title` text NOT NULL,
строка 62
было `title` varchar(255) NOT NULL DEFAULT '',
стало`title` varchar(255) NOT NULL,
после этого все появилось.
avatar
Вопрос немного не по теме, есть ли возможность использовать efilte при следующий структуре сайта:
--категории
---категория1
---...
---категориN
--товары
---товар1
---…
---товарN
Такая структура из-за того что товар может принадлежать нескольким категориям. Как быть в таком случае может быть кто-то решал такие задачи, или без своего велосипеда тут задачу не решить!?
avatar
Делал похожую завтра мини статью напишу
avatar
На «исходном» еФильтре это делается достаточно просто, доработки минимальные.

Товар все равно принадлежит к какой-то одной «главной» категории, в общем случае это категория «Товары».

А все остальные категории можно рассматривать как своего рода «теги», а точнее статические страницы с пред-фильтрами.

еФильтру передаются начальные данные для фильтрации, и он работает на этой странице так же, как и на «общей» категории, но с заранее заданными данными для предфильтра.

Вот пример «общей» категории Входные двери на моем сайте. Сверху там теги-предфильтры (Быстрый выбор, Выбор по линейке).

Нажмете на какую-либо — и попадете на доп. категорию с предфильтром в виде статической страницы.

Таких доп. категорий можно задать хоть бесконечность.

P.S. Только что-то медленно стал работать сайт, видно клиент уже успел его как-то «поправить» :), давно я его не касался уже.
avatar
Каким образом вы задали начальные данные(предфильтра), пытался использовать filters при вызове сниппета efilter не выходит. Если есть возможность, расскажите немного детальнее, думаю многие сталкиваются с такими задачами
avatar
Пришлось поковыряться, вспомнить.
Вот. Можно сделать гораздо лучше, но мне нужен был быстрый результат.

1) Вот как выглядят мои Статические фильтры (для дата-грида использован CResource)

take.ms/lKLYM

2) Вот одна страница Статического фильтра открыта на редактирование, видно, что я сделал ТВ-параметр для данных предфильтра. Данные пишутся в виде JSON.

take.ms/fZxvR

3) Так выглядит вызов еФильтра в шаблоне для этого типа страниц
take.ms/FIIn7

4) Так я хакнул файл snippet.eFilter.php

take.ms/v7QUh

Вроде бы всё.
avatar
спасибо, за ответ, 4 пункт не доступен для просмотра:(
avatar
Да, действительно. Странно.
Дублирую.

take.ms/TUFSb

Эх, старая добрая 7.1.6 безглючная… хоть новые версии и роскошны, а я по ней скучаю :)
avatar
при каждом выборе приходится проматывать страницу чуть вниз, не удобно.
Harald, может id добавишь в
<div class="container">

?
скажем
<div class="container" id="container">


:)
тогда в
<form id="eFiltr" class="eFiltr eFiltr_form" action="/vhodnye-dveri/" method="get" role="form"><div class="eFiltr_cat eFiltr_cat0">

заменяем action="/vhodnye-dveri/" на action="/vhodnye-dveri/#container"

и сразу будем промотаны вниз. :)

Это так, пожелание к сайту.
Комментарий отредактирован 2017-06-26 16:13:46 пользователем zabudkin
avatar
demo здесь: demo.evoshop.pro/
Почему то на демо сайт нельзя зайти. Пишет ошибку 500.
И желательно добавить ссылочку на github
Комментарий отредактирован 2017-06-15 06:01:38 пользователем Arviona
avatar
Да, демосайт не работает.
avatar
Сегодня поставил «классический» еФильтр на сайт и заметил, что в режиме Аякс смена некоторых настроек не отражается на работе, не появляются загруженные картинки и т.д., так как Аякс-запросы накрепко кешируются (по крайней мере, в Гугл Хроме).

Такая неприятность уже появлялась в моих диалогах с Pathologic по компоненту Selector.

Это нужно учесть при разработке нового еФильтра.

Можно добавить заголовки или сделать как Pathologic — насколько я помню, он дописал timestamp к урлу каждого аякс-запроса. Правда, это тоже не лучший выход — ведь каждый такой новый аякс-запрос кешируется, и кеш растет.
avatar
UPD: Эта фраза неверная: «Правда, это тоже не лучший выход — ведь каждый такой новый аякс-запрос кешируется, и кеш растет.»

Оказывается, Pathologic учел и время обновления кеша.
avatar
dzhuryn, подскажите пожалуйста как вы провернули операцию с сортировкой по цене высокая цена и низкая цена. При одинаковых data-value=«price» выбирается одно из значений а не оба. В сниппите evoSortBlock заданы
<code>$sortConfig = isset($sortConfig)?$sortConfig:'По название==pagetitle||Дороже==price||Дешевле==price';</code>
Комментарий отредактирован 2017-06-20 11:14:07 пользователем shden
avatar
Сам спросил, сам нашел решение :), для подобной сортировки необходим конфиг след вида
$sortConfig = isset($sortConfig)?$sortConfig:'По название==pagetitle||Дороже==price:desc||Дешевле==price:asc';
avatar
Кстати, а чем eFilter 0.1d отличается от 0.1?
avatar
я так понял отличается «допилами» Димы :)
avatar
Добрый день!
Может есть подвижки с документацией?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.