Стандартный поиск достаточно уныл и плохо поддаётся изменению. Немного скрашивает ситуацию модуль Custom Search, но например изменить количество результатов на страницу не способен даже он.
Выход — оставить модулю Search функцию индексирования, а поиск по индексу и вывод результатов возложить на Views:
- Создаём представление по содержимому.
- Добавляем дисплей Page.
- Меняем путь страницы на
search2
, чтобы не было конфликтов с модулем Search. - Добавляем раскрытый фильтр по Search: Search Terms
- Удаляем сортировку по дате.
- Добавляем сортировку по Search: Score с типом Sort descending.
- По желанию — меняем стиль, добавляем/удаляем поля, добавляем новые фильтры, выносим форму с раскрытыми фильтрами в блок.
Результат:
Похожая статья на английском: How To Create Search Pages Using Views In Drupal 7.
Полезное: Поиск с морфологией.
Написанное актуально для
Views 3
Похожие записи
- Необязательное значение одной из дат в раскрытом фильтре с оператором BETWEEN
- Сменить тип раскрытого фильтра с select на checkboxes
- Необязательное одно из двух значений раскрытого фильтра с оператором BETWEEN
- Подменить значение раскрытого фильтра Views
- Раскрытый фильтр "С фото" в виде одиночного чекбокса
Комментарии
а если сюда еще прикрутить search_api, search_api_facets и search_api_sorts вобще красота получается.
Возможно не совсем в тему, но все же: подскажите пожалуйста, каким образом можно организовать форму поиска в виде блока, как, например на httр://auto.ria.ua/ (форма красненького цвета)?
воспользоваться раскрытыми фильтрами, вынести фильтры в блок
Ну в общем разобрался кроме одного: как задать интервал, например, цена от и до в фильтре. Может подскажете еще и куда здесь копать?
оператор Is between
Хм... Этот оператор вроде работает только если цену ручками вбивать в поле фильтра, а вот можно ли сделать для цены внесенной в БД в виде текстового поля аналогичный выпадающий список, как при выборе терминов таксономии в фильтре для views?
для текстовых полей нет
Например, задача, сделатьсайт объявлений по продаже автомобилей на Drupal 7. Организовываем поиск марок, моделей, региона и т.п. + кнопочка "Применить"(Поиск) с помощью фильтров Views в виде блока на главной.
Это несколько неудобно, нам требуется отобразить много информации кроме результатов поиска машин, например еще свежие новости, краткий каталог сервисов и т.п. ...
Поэтому пытаемся создать для этой же Views страницу, куда бы перекидывало с такого блока при выборе определенных фильтров и клика по кнопочке "Применить фильтр", причем сам данный блок поиска машин на главной странице выводился бы только с одними фильтрами и без результатов, а страница, сделанная с помощью views, все параметры фильтров брала бы из URL, переданных от фильтра с главной страницы, но не имела видимых фильтров.
Пытаясь решить данную задачу зашел в тупик, ибо:
1) форма поиска в виде блока (фильтры Views) на главной странице отображается только если используется AJAX, причем результаты фильтрации отлично выводятся тут же на главную, а как заставить показываться только саму форму с фильтрами без результатов в виде полей, причем при клике по кнопочке применить шла переадресация на страницу с результатами поиска(страница Views того же представления) так и не понял;
2) страница (не блок!), где должны отображаться результаты нашего поиска без видимых фильтров, действительно показывает все нужные поля без фильтров, вот только нивкакую не хочет из URL (GET-запрос) брать параметры для фильтрации, и тупо отображает все результаты.
Подскажите, кто-нибудь, что я делаю не так?
вынесите раскрытые фильтры в блок
выведите блок в регион
profit
Т.е. оставить в блоке одни фильтры без полей для результатов, так?
А как тогда настроить фильтры для страницы, чтобы она принимала значения фильтров из блока упомянутого выше блока и обрабатывала результаты согласно значениям в фильтрах?
ничего настраивать не нужно, результаты будут выведены на отдельной странице
Да что-то не выходит...
Вот настройки блока, а вот настройки страницы.
Пытаюсь убрать поля в блоке- вьюха говорит ошибка, блок не может быть без полей, ну и, соответственно, т.е. одни фильтры оставить не получается.
Уже мозги закипать начали, а просвета нет...
А если AJAX отменить то вообще ничего блок не показывает, ни формы с фильтрами, ни результатов... А с включенным AJAX форма показывается вместе с результатами...
дисплей должен быть один - страница
А для блока другую вьюху создавать, так получается?
нет. в настройках вынесите фильтры в блок
Ага! щас попробуем!
Огромное спасибо, таки получилось то, что хотелось благодаря вашей помощи!
Кста, насчет раскрытых фильтров в блоке созданном views. Если использовать Глобальный: Dependent filter, и выводить раскрытую форму в блоке, то фильтр работает нормально, а если усложнить задачу и в этой вьюхе добавить еще страничку клонированием предыдущей, только изменить 1 скрытый фильтр и адрес страницы, и вывести обе раскрытых формы в блоке на главной странице (получим поиск аналогичных параметров по 2 скрытым категориям), то в верхней форме в блоке Глобальный: Dependent filter работает правильно, а для второй формы в блоке на той же странице Глобальный: Dependent filter работает уже неправильно, т.к. не открывает скрытые с помощью него раскрытые фильтры.
Причем при смене последовательности отображения этих 2 блоков с раскрытыми фильтрами ошибка с Глобальный: Dependent filter повторяется, и нормально работает тот блок, который окажется выше в структуре регионов.
Как бы заставить этот Глобальный: Dependent filter работать корректно с 2 аналогичными формами на одной странице, есть соображения?
столкнулся с той же проблемой..
уже третьи сутки долбусь - никак не выходит создать блок, который бы не выводил результаты поискового запроса в своем теле...
можно поподробней о том, как в настройках вынести фильтры в блок???
Advanced - Exposed form - Exposed form in block - Yes
Как в воду глядел - вся загвоздка в нюансе. Но не думал - ни гадал, что в таком элементарном! Спасибо!
Здравствуйте, подскажите а как можно сделать чтобы этот поиск искал по буквам и частям слова?
добавьте раскрытый фильтр
А где он находится, а то я не вижу? Спосибо
https://www.google.ru/search?q=drupal+views+exposed+filters
Здравствуйте!
Ничего не понимаю, сделал всё так как вы написали, захожу на страницу /search2/ а там у меня пусто - только один заголовок, а формы поиска никакой нет, что делать то??
значит не всё сделали
Великолепно!! Спасибо, ещё раз всё сначало сделал повнимательней и заработало!!!
Подскажите пожалуйста - есть ли модуль для друпала смысл которого:
пользователь заполняем поля в своей анкете - и отображается % заполнение анкеты.
Извините, если не в том месте пишу.
не встречал
Здравствуйте xandeadx, хотел заменить стандартный поиск на views по вашей статье, но не радуют результаты поиска. К примеру слово "ручка" находит а вот "ручку" уже нет.
Использую раскрытый фильтр "Search: Search Terms"
Для этого, как вариант - добавить несколько раскрытых фильтров, но строка поиска должна быть одна, что посоветуете для таких случаев??
гуглите по фразе "поиск с морфологией"
Ищет только по заголовку материалов?
нет
Блин, полдня убил на эту тему. Для тех, кто не может понять почему артикул товаров ubercart не индексируется модулем поиска drupal (ну и для гугла): search module индексирует всё, что будет выводиться в node.tpl.php (но перед отправкой в node.tpl.php). Так что надо в отображение полей товара в настройках уберкарта добавить артикул, чтобы он попал в индекс, ну а скрыть его, если он не нужен, можно с помощью CSS или в шаблоне node.tpl.php
Добрый день, столкнулся с той же проблемой, что и evgeniy - на странице отсутствует форма поиска, только мне метод "сделать заного и повлнимаьтельнее" не помог.
Можете что-нибудь подсказать?
к посту выше http://s019.radikal.ru/i643/1302/6a/3b4edc144439.png
тут ничего не надо менять?
все гениальное простоо! СПАСИБО!!!! расцеловала бы автора!
Подскажите, а есть возможность кастомизировать саму форму? в плане разметки? Например, плейсхолдеры к инпутам добавить, заменить -Any- в селектах?
hook_form_views_exposed_form_alter
Спасибо, работает)
Здравствуйте, а можно как-то в выдаче результатов выделять совпадения с словами запроса?
Спасибо огромное! Давно искал способ объединить поисковый алгоритм модуля Search и гибкость вывода результатов модуля Views.
Здравствуйте, в русской версии не могу найти "Search: Search Terms"
есть только вот это:
Поиск: Ссылки на
Другие материалы, ссылающиеся на этот.
Поиск: Ссылки от
Другие материалы, на которые ссылается этот.
Поиск: Условия поиска
Условия поиска полагаю это не ОНО
из-за этого у меня результат поиска все содержимое сайта
подскажите где что не доделал
переключите интерфейс на английский язык
Спасибо за оперативность "Search: Search Terms" нашел сделал как у вас "Search: Search Terms (required)", но теперь вообще нет результата поиска, слово в поиске совпадает 100%
м.б. в настройках Custom Search что-то натворил :(
Статья гуд! Коротко и ясно - спасибо! А подсветку найденного слова(как у стандартного search) как замутить?
еще, кстати, имеется косячок с выводом в виде нумерованного списка с использованием пагинатора - получается при переходе на последующие страницы, список начинается с еденицы, не знаете как избежать? Что бы при переходе, номер был продолжением предыдущего.
хотя допер))) предыдущее сообщение можно удалить))) нужно добавить поле счетчика, и не использовать нумерованный список)
Как я могу вывести критерий по которому происходил поиск! Кто знает подскажите!!!!
Как к этому полю добавить autocomplete, что поиск был по совпадениям.
Например набираю
ав - мне выдавалось:
авто
автомобили
автозапчасти
тоесть тот материал который уже есть на сайте.
Заранее спасибо за ответ.
http://xandeadx.ru/blog/drupal/344
Спасибо за ответ, а как добавить не новое поле, а уже к существующему
полю (фильтру) во views - Search: Search Terms, я его уже вывел на страницу с вьюхой.
Подскажите.
Создал представление "Страницу" - назвал test
Поставил в ней "Раскрытая форма в блоке:Да"
Появился блок в "блоках" смотрю его название -exp-test-page
Как его теперь вывести программно? Все перепробовал!
Вот так не выходит.
"-exp-test-page" и "_exp_test_page-block" как бы не совсем одно и тоже
Я правда пробовал по разному, прошу помощи.
По сути это же блок значит дописывать _block?
Так ничего не выводит
И вроде как надо использовать "_"?
Так тоже :(
Доброго времени.
У меня проблема возникла, может кто поможет.
Зависимые фильтры не работают во вкладках quick tabs, кроме первой вкладки.
Все перерыл, никаких патчей и вообще упоминаний об этой проблеме не много.
Здравствуйте!
Сделал поиск как в статье. Все работает. Только один момент: При вводе в поле поиска слова длиной 1 или 2 символа выдает сообщение:
Предупреждение справедливое. Только вот на сайте это выглядит как недоработка.
Подскажите как сделать обработку поискового запроса до его отправки на исполнение.
Например так:
И еще заметил что при вводе цифры длиной 1 или 2 символа предупреждение не выводится и может даже выдать результат поиска. Это нормально или тоже аномалия?
Заранее спасибо.
У меня по какой то причине поиск не ищет импортированные через feeds товары. Индексация на 100% выполнена, но товары не ищет.
У меня не ищет по фразам. Есть сайт авторазборки.
Например, если я пишу "генератор" или "toyota", то находит, но если я напишу "генератор для toyota", То результатов не будет. Как это поправить?
Очень актуально! Спасибо
Добавить комментарий