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


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

37 комментариев

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
Там заказчик перестал платить — деньги у него пока кончились. Поэтому я пока над сайтом не работаю, на полдороге остановились. А так да, там еще много чего надо делать.
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
Добрый день!
Может есть подвижки с документацией?
avatar
Как заставить заработать?
  • 1px
  • 0
avatar
Может кто подскажет как перейти с 0.1 на данную версию? А то как-то пока не очень, всё то в одну то в другую ошибку уходит, а то и вообще 0 результатов…
avatar
Товарищи, здравствуйте!
А документацию по этому решению сделали? выложите пожалуйста, если есть.
  • tmih
  • 0
avatar
Не могу понять, какой плейсхолдер вставляется а в кнопочку «Показать ещё»
<code><a class="amount__link eFilter_more btn btn-success" data-page=" вот здесь " data-prefix="">Показать ещё </a></code>
Не подскажите?
Комментарий отредактирован 2017-10-04 08:31:21 пользователем igvind
avatar
Для работы необходимо использовать placeholder [+pages_next+].

Так же необходимо обернуть в класс eFilter_more_wrap, рабочий пример
<div class="amount eFilter_more_wrap">
    <a data-page="[+pages_next+]" data-prefix="" class="amount__link eFilter_more btn btn-success">Показать ещё </a>
</div>
avatar

<div id="eFiltr_results_wrapper">
	<div class="eFiltr_loader" ></div>
<div id="eFiltr_results" >
	

 <div class="pagination_sort">
                            <div class="pagination_sort_inside clearfix"> 
								
								
								<div class="t-a_j">
								 <div class="frame-catalog-view">
                                        <ul class="items">                                            
                                           
                                        </ul>
                                    </div>		
									
                                       <div>                                            
                                            <ul class="paginate">
                                                <ul class="pagination t-a_c">[+pages+] </ul>  </ul>
                                        </div>

                 </div>	
                            </div>
                        </div>
	 

	
<ul class="catalog_item items table">	

[+dl.wrap+]  
</ul> 
 	


 	 
	
	


	
	
                   
	
	
	 <ul class="paginate"><ul class="pagination t-a_c">[+pages+]</ul>
	 </ul> 
	
			
</div>	</div> 	
	



 <div class="amount eFilter_more_wrap text-center">
    <a data-page="[+pages_next+]" data-prefix="" class="amount__link eFilter_more btn btn-success">Показать ещё </a>
</div>		
Комментарий отредактирован 2017-10-18 18:52:47 пользователем igvind
avatar
Что*то не получается.
avatar
У меня вариант выше заработал, кусок кода из вывода

[!eFilterResult?
    &depth=`2` 						
    &prepare=`prepareGal`
    &tvList=`stuff,size,width,tip,class,price,color`
    &paginate=`pages`
!]	
<div class="amount eFilter_more_wrap">
<a data-page="[+pages_next+]" data-prefix="" class="amount__link eFilter_more">Показать ещё </a>
</div>
[+pages+]
avatar
В моём вызовы нет &prepare= Подскажите, за что он отвечает? или где почитать?
avatar
Нашёл
avatar
этот для дополнительной обработки данных, на пагинацию он точно не влияет.
avatar
Спасибо, буду разбираться. Не плохо было бы документацию по новому Efilter увидеть.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.