Сегодня мы познакомимся с платным дополнение для MODX, которое осуществляет поиск и фильтрацию любых ресурсов — mSearch2.
Основные особенности:
- Морфологический поиск сразу на нескольких языках. По умолчанию — русский и английский.
- Обновление поискового индекса автоматически, при сохранении ресурса в админке.
- Возможность задать «поисковый вес» каждому индексируемому полю ресурса.
- Возможность индексации ТВ параметров и комментариев Tickets.
- Поиск по ресурсам внутри админки сайта.
- Сохранение поисковых запросов и управление синонимами слов.
- Автоподсказки и быстрый поиск.
- Ajax фильтрация результатов поиска с построением прямых url через History Api.
- Возможность расширения класса фильтрации для прописывания собственной логики.
- Гибкая работа с шаблонами оформления — для каждого фильтра есть возможность назначить собственные.
- Высокая скорость работы и поиска, и фильтра.
- Возможность выводить результаты поиска и фильтрации любыми сниппетами.
Установка
После покупки дополнения в репозитории Simple Dream, вам нужно загрузить и установить его на сайт. При этом будут скачаны 2 словаря phpMorphy, которые обеспечивают работу с морфологией.Затем, в админке, вы можете загрузить еще дополнительные словари:

После этого вам нужно проиндексировать весь сайт. Делается это только после первой установки mSearch2, изменении набора языков или настроек индексировани.

После этого вы уже можете что-то искать в админке.

Обратите внимание, что поиск — морфологический. Например, по запросу «товары» mSearch2 находит рсеурсы с названием «Товар», а вот встроенный поиск MODX 2.3 — нет. Он ищет точное совпадение.

Таким образом, вы получаете морфологический поиск по ресурсам сайта прямо в админке.
Вывод на сайте
Есть два способа вывода поиска на сайте: простой и с фильтрацией.Простой способ — это вывод формы поиска, и результатов с постраничной разбивкой под ней.
[[!mSearchForm? &autocomplete=`results` ]] [[!pdoPage? &element=`mSearch2` ]] [[!+page.nav]]

Автоподсказки выводятся сразу по результатам запроса. То есть, это даже не подсказки, а быстрый поиск — если кликнуть на результат, то вы сразу перейдёте на страницу ресурса — minishop2.com/search/simple.

Более продвинутый вывод поиска, с фильтрацией:
[[!mSearchForm? &autocomplete=`queries` ]] [[!mFilter2? &forceSearch=`1` ]]Параметр &forceSearch=`1` указывает фильтру, что не нужно сразу выводить ресурсы для фильтрации — должен быть поисковый запрос. Также здесь уже включен режим автоподсказок по истории запросов.

Как видите, использовать mSearch2 очень просто — minishop2.com/search/filter.
Вывод каталога товаров miniShop2
В отличии от других подобных решений фильтрации, mFilter2 строит фильтры динамически, в зависимости от выводимых ресурсов. А это значит, чтобы мы можем использовать msProducts для вывода товаров.[[!mFilter2? &parents=`0` &limit=`10` &element=`msProducts` &filters=` ms|price:number ,parent:categories ,msoption|tags ,ms|vendor:vendors ` &class=`msProduct` &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider` &tplFilter.row.ms|price=`tpl.mFilter2.filter.number` ]]Всё оформление блока вывод находится в чанке tpl.mFilter2.outer, также мы указываем специальные числовые чанки для вывода слайдера с ценой.

Пожалуй, это самый крутой способ выводить товары сайта — minishop2.com/catalog/.
Заключение
Вот мы и познакомились с самым популярным платным дополнением магазина Simple Dream. Конечно, это только верхушка айсберга, и возможности для фильтрации ресурсов поистине неисчерпаемы.Например, вы можете добавить товару новое поле через плагины miniShop2 и настроить фильтрацию по нему — вот готовая инструкция.
Вообще, рекомендую внимательно почитать документацию на сайте docs.modx.pro/components/msearch2/, там всё очень подробно расписано.
Самостоятельно пробовать платные дополнения перед покупкой можно на test.modx.pro.
На следующем занятии мы познакомимся с другим платным компонентом Office, который позволяет сделать красивую авторизацию, работу с профилем пользователя и вывод заказов miniShop2.
← Следующая заметка
Личный кабинет покупателя Office
Личный кабинет покупателя Office
Предыдущая заметка →
Вывод каталога товаров и оформление заказа
Вывод каталога товаров и оформление заказа
Хочу купить, для начала, mSearch2 и в связи с этим хотелось бы понимать, что покупаю. В том смысле, как я могу дальше использовать этот код? Только в одном или во всех своих проектах? Могу ли я брать деньги за настроенные мной сайты с установленным купленным кодом? Как обстоят дела с обновлением? Появляется ли у меня приоритет в тех. поддержке?
Если где то есть доступное описание этих моментов, пожалуйста дай ссылочку! Я бегло прочитал «Положения» в магазине, но это, кажется, не то.
Дополнение покупается для ключа репозитория. Один сайт — один ключ. Для нового сайта нужно покупать еще раз, за кажду покупку + 10% скидка и так до 50%.
Естественно.
Отлично, все обновления бесплатны на весь срок жизни дополнения.
Да, появляется возможность задавать вопросы в поддержке магазина.
А то у меня по дизайну слева в сайдбаре сначала менюшка с категориями товаров, ниже под ней блок фильтров, еще ниже, может еще, что то будет.
А справа в контентной области, сначала слайдер, а под ним уже каталог, который, собственно, результаты и есть.
В [[+cat.filters]] должно, что то выводиться (там пусто), я правильно понял?
Центнер кирпичей уже произвел.
Спасибо! )
Если хотя бы раз использовать фильтр, то даже если все галки потом убрать, то исчезает пагинация от pdoPage. Как бы, вот её обратно?
Вызов такой
И еще, у меня блоки с фильтрами в сайдбаре, сделаны скрывающимися. Вот можно где то хранить их состояние?
Ну, в смысле, я могу сам их в куку сложить, но ведь состояния чекбоксов где то хранятся? Может и состояние блоков туда же? Есть для этого какой то простой способ?
Состояние чекбоксов хранится в url, чтобы можно было давать прямые ссылки на результаты фильтрации. Состояние элементов оформления лучше хранить в куках юзера.
Обнаружилась такая ситуация. Для доступа к сайту есть два домена, на латинице и на кириллице, один ссылка на другой. И вот, когда попадаешь на страничку с каталогом с латинского домена (по сохраненной ссылке, например) и используешь на ней фильтр, то js ругается на невозможность передавать данные на другой домен и не работает. Ошибку показывает в 606-й строке default.js
Кириллический домен кодируется в punycode
Если не ставить mimishop2 на сайт, будет ли работать mFilter2, если да, то как он будет подтягивать изображения с ресурсов?
У меня есть на сайте структурированный каталог, в каждом ресурсе есть TV поля для фильтрации + картинки. Реально ли выводить фильтром эти данные, или же необходимо грузить mimishop2.
Он и не будет — это будет делать сниппет, используемый для вывода результатов: хоть pdoResources, хоть getResources.
Конечно. Можно попробовать дополнение в работе на test.modx.pro перед покупкой.
У меня есть к примеру n-количество ресурсов с тремя TV
1. Марка
2. Тип кузова
3. Грузоподъемность (данные в числах, чтобы потом слайдером выводить)
В каком виде мне сделать запрос, чтобы вывелись эти поля для сортировки с помощью фильтра? Подскажите плиз.
Правильно ли я заполняю TV параметры? Или их нужно заполнять в самом TV а потом в ресурсе просто из возможных вариантов выбирать???
Только вот все выводится по английски: сортировка, лексиконы и т.д. Это из за того, что стоит включены два словаря английский и русский?! Мне надо они оба для поиска… Как по умолчанию сделать лексиконы русскими?
У меня абракадабра выводится, единственным хорошим есть ссылка, которая реально ведет на нужную страницу.
Хочу сделать так, чтобы выводилась картинка и ссылка.
Вот
Укажи параметры для этого сниппета при вызове mFilter2 — они туда передадутся.
Василий Наумкин — The Best!
Разделил вывод и фильтр с помощью toPlaceholder. Все замечательно выводится. Но вот фильтры не работают. Что я не так делаю?
file.modx.pro/files/e/b/7/eb7fd42f4fd7defdfc0d94ed728c71fa.png
Так же как на minishop2.com и mamaboutique take.ms/OkrkG
Честно говоря, думал, что в этом курсе будут рассмотрены эти аспекты. А инфы меньше, чем в FAQе приложения.
Ты купил дополнение? Создай тикет, напиши там доступы к сайту, я зайду и посмотрю, что не так.
Сколько бы я не написал информации, всегда есть у кого не работает и ничего здесь не поделать.
У меня на странице подбора шасси все настроено благодаря Вам и работает:
[[!mFilter2?
&element=`pdoResources`
&tpl=`tpl.Product.row`
&tvPrefix=``
&parents=`12`
&hideContainers=`1`
&includeTVs=`imgtovara`
&filters=`
tv|cargo:number,
tv|marka
`
&tplFilter.outer.tv|cargo=`tpl.mFilter2.filter.slider`
&tplFilter.row.tv|cargo=`tpl.mFilter2.filter.number`
]]
А вот на странице подбора автобуса не выводится слайдер, в чем я ошибся?
[[!mFilter2?
&element=`pdoResources`
&tpl=`tpl.Product.row`
&tvPrefix=``
&parents=`5`
&hideContainers=`1`
&includeTVs=`imgtovara`
&filters=`
tv|place:number,
tv|marka,
tv|tipavtobusa
`
&tplFilter.outer.tv|placeBus=`tpl.mFilter2.filter.slider`
&tplFilter.row.tv|placeBus=`tpl.mFilter2.filter.number`
]]
это вопрос номер один. Вторая проблема, в УПРАВЛЕНИИ СЛОВАРЯМИ не нахожу новый фильтр для смены имени, смотрел в обоих языках ru и en.
ПОМОГИТЕ плиз.
Во втором:
Неужели так трудно внимательно сверить два вызова дополнения и найти отличия, почему в одном случае работает, а в другом нет?
Ну не смешно уже.
Я же отправлял тебя в документацию, просил прочитать внимательно, что написано в конце. Ну как так можно то?
Там даже картинка есть, как добавлять записи.
Больше я на такие вопросы отвечать не буду, имей совесть.
То есть, ТВ параметр place у всех выводимых товаров пуст.
Все подключения скриптов рабочие и ведут куда надо… Помогите понять причину…
вот здесь беда
В консоли ошибка javascript.
А если сама — то пора вызывать охотников за приведениями.
Если здесь сарказм, то да я ХЗ как его решить ту гребанную проблему. А если в самом деле без бэкапа никак, тогда я так и сделаю.
Все мои дополнения потому и хранятся в GitHub, что можно отмотать историю изменений и понять, что и почему сломалось.
Просто хотел морально поддержать, больше не буду, извини.
P.S. За поддержку спасибо )
Сначала подключается jQuery 1.9, а сразу после этого его заменяет jQuery 1.5, в котором нет метода on() и отсюда ошибка при его использовании в mSearch2.
Убирай нафиг подключение этого древнего jQuery 1.5!
Я сразу и не понял, что в этом куске кода подключение идет [[*showAd:is=`1`:then=`[[$adLinks]]`]]
Подскажите где изменить.