Как организовать нормальный поиск в commerce?

Главные вкладки

Аватар пользователя noneart noneart 20 сентября 2013 в 0:53

оказалось что это не так очевидно. Опять оказался в тупике. Commerce Kickstart не помогает.

search api + facet api получилось как-то связать. но проблема в том, что он не позволяет делать множественный выбор.

например, выбираю категорию fotokamera. показывает список товаров этой категории.
так же показывает facet с возможность выбрать Брэнд. брэндов, допустим, 5 штук.
Но выбрать то я могу только один брэнд. А мне надо, чтобы я мог выбрать столько брэндов, сколько угодно, и чтобы показывать в этом случае товары только тех брэндов, которые выбрал.
и так нужно со всеми фасетами.

никак не получается мне найти решение такой задачи.
нашёл такой интересный модуль - https://drupal.org/project/taxonomy_facets - но он какую-то фигню мне показывает... лишние ноды пихает зачем-то, и вообще не особо разобрался как он работает

подскажите, как мне сделать нормальную навигацию по товарам с продвинутой фасетной фильтрацией, как это сделано в современных интернет магазинах (amazon, например, или как вот это здесь сделано - https://www.digizone.ee/ru/12/Digikaamerad/15/Peegelkaamerad/17830/Nikon... )

Комментарии

Аватар пользователя CSoft CSoft 20 сентября 2013 в 1:51

"noneart" wrote:
Но выбрать то я могу только один брэнд. А мне надо, чтобы я мог выбрать столько брэндов, сколько угодно

В настройках фасетов разрешали множественный выбор?

"noneart" wrote:
нашёл такой интересный модуль

Он не относится к facetapi и работает отдельно вообще. То есть, удалите его Smile

Аватар пользователя Lizergin Lizergin 20 сентября 2013 в 2:42

Вообще множественный выбор можно и нужно организовывать на Apache Solr, но есть такой модуль Facetapi Multiselect и по описанию ним вроде как можно организовать мультиселект, но я его не ковырял, с Apache Solr Search точно можно организовать, если вы по техническим причинам или каким другим не развернете Apache Solr у себя на хостинге или где бы там ни было, а расшарите мультиселект с Facetapi Multiselect или как-то по другому, но без Индейца, напишите тут или в личку мне, буду благодарен.

P.S. как расшарить поиск на Drupal 7 с помощью Apache Solr можно посмотреть тут

Аватар пользователя Artu Artu 20 ноября 2013 в 0:57

imenami wrote:
Вообще множественный выбор можно и нужно организовывать на Apache Solr, но есть такой модуль Facetapi Multiselect и по описанию ним вроде как можно организовать мультиселект, но я его не ковырял, с Apache Solr Search точно можно организовать, если вы по техническим причинам или каким другим не развернете Apache Solr у себя на хостинге или где бы там ни было, а расшарите мультиселект с Facetapi Multiselect или как-то по другому, но без Индейца, напишите тут или в личку мне, буду благодарен.
>

Поставил Facetapi Multiselect.

Появился для выбора вот такой виджет - http://prntscr.com/25bk0x.
При выборе одного значения работает, при выборе нескольких (удерживая Ctrl) возвращает нулевую выборку. И даже фасеты (блоки) пропадают.

Сделал то что написано в ридми модуля.
Виджет изменился - http://prntscr.com/25bjq7, но результат тот же, работает только с одним вариантом.

Facetapi Multiselect не работает с Database Search?

Related projects:

Facetapi Select попробовал, ошибка.
Facet API Chosen (песочница) пробовать не стал.
В описании обеих модулей написано что они работают с одним вариантом выбора.

Аватар пользователя noneart noneart 20 сентября 2013 в 16:23

"imenami" wrote:
Вообще множественный выбор можно и нужно организовывать на Apache Solr

так точно.. в общем-то это не явилось для меня новостью, просто получилось всё кувырком как обычно. Я установил commerce search api - такой модуль специально для search api.. он создал сервер - database + индекс. всё хорошо работало. потом я решил что нужно ставить solr, чтобы получить заветные OR+AND. поставил solr, а в настройках индекса в search api поменял сервер с базы данных на мой новый solr сервер.
таким образом ничего не получилось. индекс оказался Переопределенным, и операторов OR/AND в фасетах не появилось.
в общем оказалось что индекс нужно создавать новый и сразу прикреплять его к solr серверу. тогда у меня в фасетах появились нужные мне операторы.

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

Техника
-- Компьютеры
---- Лаптопы
---- Настольные
---- Планшеты

конечно было бы хорошо, чтобы всё это дело было организованно как реальное меню друпала (например через taxonomy menu).
другой момент: выбираю "Техника" - показывает все товары (компьютеры, лаптопы, настольные и т.д.). как известно таксономия друпала не обладает такими возможностями. давно думаю, как это решить. вот подумал такой способ: Hierarchical select умеет прописывать ноды во всех терминах по всей цепочке. как раз то что нужно. может таким образом это сделать? или есть способ получше?
теперь возникает такая проблема: нужно чтобы на этих страницах этих категорий показывались фасеты (само собой разумеется как понимаете), но фасеты работаю ведь только на страницах вьюх индексированных нод.

в итоге я хочу получить поведение похожее вот на это - http://demo.cs-cart.com/ultimate/index.php?dispatch=categories.view&cate... - это CS-Cart (очень хороший движок кстати). Только не спрашивайте, почему я просто не взял этот движок. Для этого есть свои причины Smile

Аватар пользователя noneart noneart 21 сентября 2013 в 17:38

такая проблема возникает из-за того, что нужно показать все продукты из всех подразделов текущей категории.
в обычном случае это решается при помощи контекстного фильтра "Content: Has taxonomy term ID (with depth)"
однако в product display такой фильтр отсутствует. а это единственный способ показывать фасетные фильтры.. опять в тупике как говорится.

есть вот такое решение - http://drupal.stackexchange.com/questions/11922/product-display-and-taxo... - но там автор не гарантирует результата. это немного печально, но стоит проверить. может не так всё плохо.

поэтому и возникла идея с hierarchical_select

что скажете? может я не туда копаю. может есть какие-то более гуманные и более интересные способы?

Аватар пользователя noneart noneart 21 сентября 2013 в 20:44

нашёл вот такое интересное решение с минимальным кодингом - https://drupal.org/node/1119594

там используется taxonomy_get_children ... я так понимаю вместо неё нужно использовать taxonomy_get_tree чтобы получить то что я хочу?

не накладно ли это будет?

вариант с hierarchical_select работает как часы (пока что Smile ), но мне не нравится так каша, которая теперь в словаре. taxonomy menu, например, не будет показывать правильное кол-во продуктов, но даже не это меня беспокоит (циферки то в меня я просто отключил и всё тип топ). А беспокоит, то что это не drupal way. всё это каша, повторюсь, и какого-то глюка я словил после установки HS. пришлось во всех материалах по-новому установить категорию товара. похоже этот HS какие-то нестандартные методы использует.
в общем меня больше склоняет к SHS + вот этот способ по ссылке выше.