Вариант строки поиска с автоподстановкой без использования Search API

Аватар пользователя VasyOK

Как уже многие начали составлять методички о внедрении поиска с автоподстановкой на сайт.
http://drupal.ru/node/130905 gun_dose предлагает внедрять подобное на сайт с Search API, я пишу от поиске без Search API. Результат тут http://ukrigrushka.com.ua/

Понадобятся модули:
 search_autocomplete
 better_exposed_filters
 mefibs
 views_selective_filters
 views_block_filter_block - не обяз

Поехали.

1. Вьюха, которая выводит товары. Помещена на отдельную страницу.

main-view

Ставим 2 блока для вывода фильтров

1) Строка поиска (в шапке, то для чего вы это читаете) - блок defaul
2) Фильтры производитель, материала, тип товара - блоки с фильтрами. Необязательно, но я поставил.

2_-_main-view_-_blocks.png
3_-_main-view_-_blocks_-_def.png

Будут выглядеть так:
primer1
primer2

Расставляем фильтры вьюхи по блокам.

1) Строка поиска ищет по заголовку товара, поэтому Заголовок в блок default
2) Каталог, Производитель, материал и т.п. - в блок с фильтрами. Внимание! Использован views_filters_selective.

4_-_main-view_-_filter_1.png
5_-_main-view_-_filter_5.png

Настройки Better Exposed Filters

6_main-view_-_bef1.png
7_main-view_-_bef2.png

Расставляем блоки в теме

1) Блок строки поиска - в "шапку". У меня регион для телефонов.
2) Блок остальных фильтров в содержимое. Показывать блок только на странице product-search* - путь главной вьюхи (крутим вверх.)
8_blocks_1.png
9_blocks_2.png

2. Вьюха автоподстановки. Выпадает в строке поиска.

В автоподстановке строки поиска будут выводиться:
- название товара
- его картинка
но можно выводить любые поля.
10_autocompl-view.png
11_autocompl-view-row-sett.png

3. Настройки автоподстановки.

Собственно настройки модуля search_autocomplete. Находяться по адресу admin/config/search/search_autocomplete
Добавляем форму. Я уже добавил, поэтому редактирую свою.
12_-_autocompl_-_base.png
13_-_autocompl_-_sett_1.png
14_-_autocompl_-_sett_2.png

Самое главное тут:
Use an existing view: - вьюха автоподстановки.
ID-селектор этой формы - Инпут строки поиска в "шапке". Firebug в помощь. Либо временно на странице настроек модуля включить "Use autocompletion helper tool for Search Autocomplete administrators."

Осеннее обострение

18.10.2017
Дорогие товарищи, если хотите пользоваться модулем mefibs, вам нужно иметь нехило прокаченный навык JS / Jquery. Если вынесите строку поиска в отдельный mefibs-блок - может вылезти проблема - поиск не переходит на товар, если этот товар в поиске выскакивает всего один. При повторном вводе поискового запроса, проставленые галочки не сбрасываются, что тоже плохо.

На данный момент оптимальный вариант -
1. На странице поиска - все как сверху, но "Раскрытая форма в блоке: Нет"
2. Стилями скрываем строку поиска из фильтра.
3. Блок поиска - обычный HTML код:

<form action="/product-search?title" method="get">                    
      <input type="search" name="title">                  
</form>

Если кто-то пользуется похожими методами просьба написать о результатах.

6 Спасибо

Комментарии

Аватар пользователя bumble
bumble 11 месяцев назад

На главной.

0 Спасибо
Аватар пользователя VasyOK
VasyOK 11 месяцев назад

Кому что не понятно - спрашивайте. Возможно что-то и забыл.

0 Спасибо
Аватар пользователя serj7
serj7 3 месяца назад

На мультиязычном сайте из Entity Translation не приходилось такое делать ?
В ишьюсах модуля пишут что мультиленг не работает. https://www.drupal.org/node/2596775
Сам пытался связи у вьюхе накрутить, для второго языка автокомплит не работает никак.

0 Спасибо
Аватар пользователя VasyOK
VasyOK 3 месяца назад

не приходилось. Попробуйте для нод указать выбор языка нейтрально. Ну на карйняк разные блоки поиска для разных языков.

0 Спасибо
Аватар пользователя serj7
serj7 3 месяца назад

Разные блоки поиска для разных языков я и не могу сделать, когда в настройках вьюхи указываю только второй язык, ничего не работает.
Могу вывести редакции всех языков ноды сразу, но если фильтровать только второй язык, выдача не работает.
Сейчас думаю над вариантом Search API, может там получится.

0 Спасибо
Аватар пользователя serj7
serj7 3 месяца назад

Сделал все таки.
1. Вьюха, которая выводит товары.
1.1. Делам клон страницы для каждого языка.
1.2. Добавляем связь "Содержимое: Entity translation: translations".
1.3. Поля добавляем через "Entity translation:", Например: "Entity translation: Заголовок". В настройках этого поля указываем язык.
1.4. Добавляем фильтр "Entity translation: Язык" из связью "Translations" и выбираем нужный язык.
Пример: "(Translations) Entity translation: Язык (= Английский)".

2. Вьюха автоподстановки. Выпадает в строке поиска.
2.1. Для каждого языка полностью клонируем вьюху, и настраиваем отдельно. (Полный клон нужен для настроек форм у "Search Autocomplete settings").
2.2. Добавляем связь "Содержимое: Entity translation: translations".
2.3. Поля добавляем через "Entity translation:", Например: "Entity translation: Заголовок". В настройках этого поля указываем язык.
2.4. Добавляем фильтр "Entity translation: Язык" из связью "Translations" и выбираем нужный язык.

3. Настройки автоподстановки.
3.1. Для каждого языка отдельная форма с указанием вьюхи автокомплита и селектора поисковой формы.

4. Вывод блоков
4.1. Включаем модуль Block languages из пакета i18n.
4.2. В настройках каждого блока указываем для какого языка его отображать.

0 Спасибо
Аватар пользователя Studio VIZA
Studio VIZA 3 месяца назад

Большое спасибо за инфу, а то всё как то - Ты тут ... лет, а до сих пор ... ))

0 Спасибо
Аватар пользователя VasyOK
VasyOK 3 месяца назад

Пожалуйста. Благодаря serj7 я понял, что не одинок во вселенной. И еще благодяря 2-м товарищам, которые не могли настроить видимость блока через модуль context.

0 Спасибо
Аватар пользователя smeshariki
smeshariki 3 недели назад

Подскажи пожалуйста, что за настройка во вьюхе на первой картинке - exposed form blocks default+1
Не могу найти где это включается.

0 Спасибо
Аватар пользователя smeshariki
smeshariki 3 недели назад

Устанавливал через drush, не заметил что модуль не установился. Хотел изобразить из себя профи и немного лажанулся.

Под выпадающим списком есть ссылка "все результаты для *запрос*"
Например на твоём сайте если перейти, то попадаешь на страницу с релевантными продуктами. Я попадаю на страницу вьюхи, но никакие продукты не выводятся. Что за секрет может быть?

П.С. Кажется понял. Поиск через форму, которую создала вьюха, производится только по полю "заголовок", а чтобы искать по всем полям, придётся использовать стандартную форму, похоже.

0 Спасибо
Аватар пользователя smeshariki
smeshariki 3 недели назад

.

0 Спасибо
Аватар пользователя VasyOK
VasyOK 3 недели назад

Я так радый что ты все понял, потому как я тебя понимаю смутно.

Если нужно чтобы поиск шел не только по полю заголовка, нужно создать "скрытое" поле для ноды, куда подтянуть Заголовок и другие поля (по которым предполагается поиск, можно термины таксономии). И искать по этому "скрытому" полю.

Как подтянуть значения других полей в это поле? Попробуйте модули
https://www.drupal.org/project/field_default_token
https://www.drupal.org/project/field_token_value

0 Спасибо
Аватар пользователя smeshariki
smeshariki 3 недели назад

--==удалено==--

В общем, сейчас проблема такая: когда нажимаешь "поиск", то выдаёт какие-то результаты только если полностью написал весь заголовок, а у тебя поиск по кусочку слова, даже если оно написано не очень точно, по типу как описано у андеда http://xandeadx.ru/blog/drupal/686
Вымучиваю решение.
Благодарю.

0 Спасибо
Аватар пользователя VasyOK
VasyOK 3 недели назад 1
smeshariki написал:
В общем, сейчас проблема такая: когда нажимаешь "поиск", то выдаёт какие-то результаты только если полностью написал весь заголовок,

Сюда смотри внимательно. Все модули поставил?
http://drupal.ru/files/4_-_main-view_-_filter_1.png
http://drupal.ru/files/13_-_autocompl_-_sett_1.png

smeshariki написал:
а у тебя поиск по кусочку слова, даже если оно написано не очень точно, по типу как описано у андеда

у меня такого (увы) нет, а у Андеда, через Search API

Аватар пользователя smeshariki
smeshariki 3 недели назад 1
VasyOK написал:
Сюда смотри внимательно. Все модули поставил?

Дай тебе Бог здоровья. Спасибо.

Аватар пользователя VasyOK
VasyOK 2 дня назад

Дорогие товарищи, если хотите пользоваться модулем mefibs, вам нужно иметь нехило прокаченный навык JS / Jquery. Если вынесите строку поиска в отдельный mefibs-блок - может вылезти проблема - поиск не переходит на товар, если этот товар в поиске выскакивает всего один. При повторном вводе поискового запроса, проставленные галочки не сбрасываются, что тоже плохо.

На данный момент оптимальный вариант -
1. На странице поиска - все как сверху, но "Раскрытая форма в блоке: Нет"
2. Стилями скрываем строку поиска из фильтра.
3. Блок поиска - обычный HTML код:

<form action="/product-search?title" method="get">                    
      <input type="search" name="title">                  
</form>
0 Спасибо