Здравствуйте! Подскажите возможно ли добиться при помощи фасетов на Ubercarte подобного блока фильтрации http://demo.commerceguys.com/ck/products.
Установил модули Search API, Facet API, Database search.
Создал в Search API сервер, затем создал там же индекс в котором указал ранее созданный сервер. В индексе на вкладке фасеты отметил нужные поля, в результате чего у меня сформировались блоки, но как их вывести ума не приложу?? Подскажите как можно решить эту проблему или где почитать?
Комментарии
на английском в гугле посмотрите там видео есть всего процеса
В настройках фасетов есть все блоки. И в блоках должны быть. У меня на панелях их нет)
http://www.youtube.com/watch?v=rArRwp_1h8Q вот это поможет
Спасибо помогло! Теперь я могу выводить представления, в которых будут блоки с фильтрацией. Теперь возникает вопрос как сделать чтобы эти представления выводили определенные термины таксономии.
Например ссылка site.ru/taxonomy/term/99 должен выводиться Views с терминами 99 словаря. В обычном представлении я это делал устанавливая контекстный фильтр по таксономии. Тут же я не могу найти такого фильтра. Подскажите как быть?
поле с рефренсом на термины словаря-каталога надо добавить в индекс
представление создаете на базе таблицы с индексом
в представлении добавляете контекстный фильтр по полю с ссылкой на термин
в настройках контекстного фильтра указываете Предоставить аргумент по умолчанию - ID термина таксономии из URL
или передаете этот ID в представление самостоятельно
поле со ссылкой добавил
представление создал на базе созданного индекса в Search API
добавил нужные поля для отображения
добавил контекстный фильтр по полю Indexed Материал: Catalog,являющегося ссылкой на термин таксономии
в настройках указал Предоставить аргумент по умолчанию - ID термина таксономии из URL.
в итоге выводится пустое представление. Вроде бы все верно сделал. Без контекстного фильтра выводятся все товары. При выводе без фильтра все товары выводятся нормально. Столбец "Каталог" это ссылка на термин таксономии товара, а столбец "ID термина (indexed)" это ид термина таксономии товара. Фильтры пробовал ставить как по ссылке так и по обычному термину, ничего не выходит подскажите пожалуйста в чем может быть ошибка?
а переиндексировать?
переиндексировал еще раз всеравно никак
Представление прикрепил. может ошибка в простом?
----------------------
Пересоздал индекс заново и контекстный фильтр заработал!!! Теперь проблема в том как добавить кнопку "купить"? В обычном представлении она добавляется полем "Товар: Buy it now button", но здесь его нет и в индексе не нашел похожих полей. В чем тут подвох и как это можно реализовать?
форма добавления в корзину физически не может быть в таблицах индекса - ей там просто нечего делать
за уберкарт не уверен на 100%, но стоит попробовать добавить в настройках представления отношение,
скорее всего, поскольку в убере товар - это нода, то по id индексированного содержимого
выводить не поля а материал
При выводе готовой сущности, выводятся все поля, а мне нужно только некоторые(картинка, артикул, цена, "в корзину").
По поводу привязаться к id. Кнопка "в корзину" имеет вид
<input class="list-add-to-cart form-submit" type="submit" id="edit-submit-ИД_ТОВАРА" name="op" value="В корзину">
Решил сделать вывод этого поля, а в настройках ПЕРЕЗАПИСАТЬ РЕЗУЛЬТАТЫ-Заменить выводимое полем значение вставил этот код где в ИД_ТОВАРА подставил шаблон [nid]. Но в результате ничего не выводится, хотя снизу подписано, что можно использовать HTML.
Если использовать просто текст и значения из шаблонов, то все выводится, но HTML код не видится.
добавить свой тип отображения (если дефолтных не хватает)
и настроить его вывод...
помешать это сделать может только тупость.
сделай, замерь, сравни со скоростью вывода полями, выбери оптимальный.
а сделать новый display религия не позволяет?? поставте себе Kickstarter демо и посмотрите как там сделано, не занимайтесь фигней.
Почему не позволяет то?) У меня не так много опыта как у большинства присутствующих здесь и некоторые вещи я просто не знаю как реализовать. Поэтому и спрашиваю возможно очевидные для вас вещи.
Если вас не затруднит, дайте пару советов по тому как это можно с display сделать?
не, так в друпале формы не строятся )
почитайте на досуге про Form API
раз джойнить через отношения таблицу нод не получается, тогда - выводить отрендеренный материал, как посоветовал multpix
тут у меня самого возник вопрос не холивара ради, а в целях саморазвития:
- всегда считал, что производительней делать представление полями, а не готовыми сущностями, т.к. во втором случае дёргается entity_load() со всеми его хуками
или нет?
кстати, появился повод попробовать заменить форму добавления в корзину на собственный колбек
вначале немного теории:
- для того, чтобы положить товар в корзину покупателя, необходимо отправить форму, в которой помимо id товара должен содержаться id юзера, в чью корзину добавляется товар, а точнее - id сессии юзера, т.к. все анонимы имеют id=0
- в связи с этим, формы добавления товара, а вместе с ними и страница каталога, содержащая эти формы, генерятся для каждого посетителя индивидуально, т.е. кол-во вариантов одной страницы каталога = кол-ву уников
- из-за этого кешировать представление, формирующее страницу каталога, не представляется возможными - при добавлении товара в корзину с закешированной таким образом страницы, он попадет в корзину не того посетителя, который его добавил в корзину, а того посетителя, с id сессии которого был создан кеш
- на самом деле, товар не попадет ни в какую корзину, т.к. Form API это вам non penis canina est, но это уже детали
есть мысль вместо кнопки добавления в корзину выводить какую-нибудь ссылку, разукрашенную под кнопку:
<a class="my-custom-add-to-cart-button" href="/my/custom/add/to/cart/callback/prodict/id/equal/[nid]">Добавить в корзину</a>
- на ссылку навесить аякс, чтобы страница не перегружалась
- в коллбеке генерить форму добавления в корзину и сразу же её сабмитить
- или просто дёргать функцию добавления в корзину <---- ACHTUNG! тут может случиться дырка
в качестве ожидаемого профита - можно кешировать страницу каталога, кешформ будет пухнуть намного медленнее
я просто умоляю ... поставьте commerce kickstarter и посмотрите там сами.... сразу куча вопросов отпадет
все верно, но он лентяй)))
для утяжеления админ-интерфейса есть такое:
http://drupal.org/project/entity_view_mode
но проще делать своим модулем (коли надо)
сейчас у меня долгострой (пепел на наши головы))
так там делал так:
каталог - вьюс - индекс solr - вывод индексированных полей
nid перезаписан на вывод соответствующей ноды во всплывающем окне,
а-ля быстрый просмотр, и там уже и купить и голосовать и отложить и заказать (мильйон форм).
да, но это же лишний клик, а заказчики люто неистово фапают на правило трёх кликов
и никак не хотят вникнуть в структуру своих-же товаров а так-же особенности и подводные камни функционала своего-же магазина.
а доступно и расширенно это объяснять - как книгу написать))
меня спасло то что это было условием клиента
p.s.
выводить формы рядом с полями из индекса, так-жеж весь позитив от индексации потеряем)) имхо.
ну тогда не вижу смысла вообще ему помогать
дак уже помог))
показал куда смотреть,
а Андрюха подводные камни обозначил.
этого достаточно.
думаю будет полезно, а дать готовое решение - это как обезьяне гранату подарить)))
кстати универсального готового решения этой траблы нет.
или я туплю ...
имхо, там позитив исключительно в фасетах (они поинтереснее раскрытых фильтров будут) и стемминге, который в представлениях не участвует
в остальном - всё как у бабочек
да это и не трабла в общем-то: запросы к солру идут по http, и джойнить в них sql - это как совмещать понятия пространства и времени
топикстартеру еще на водка:
- в представлениях существуют темплейты полей, можно в темплейте рендерить форму добавления в корзину, дёргая её с помощью drupal_get_form()
да лентяй лентяй))
Может я пошел не верным путем, но решил попробовать так. У товара есть в "управление отображением" два вида отображения "по умолчанию" и "анонс". "по умолчанию" я отображаю когда выводу страницу определенного товара. А вот в "анонс" я спихал все необходимые поля, в том числе и кнопку "в корзину".
Что получилось прикрепил. Но теперь столкнулся со следующим. Поскольку поля одинаковые, то и классы у них одинаковые т.е. оформление полей будет одинаковое, что на странице товара то и в анонсе. И еще нужно убрать в анонсе надпись "Цена онлайн". Пока вижу решение в скрипте, скрывающем надпись и изменяющем стили. Думаю что возможно есть какое-то более рациональное решение.
сделайте для вюхи другой цсс. делов то
напись цена онлайн прячите тоже через цсс
Ой, точно не подумал, спасибо!