Як поєднувати відкритий фільтр перегляду з пошуком?


18

Мій клієнт попросив мене про єдине поле, яке працювало б двома способами:

  • Автозаповнення фільтра на основі систематики.
  • Якщо відвідувач сайту вводить щось, що не входить в систематику, слід виконувати повний пошук тексту на тілі вмісту та показувати відповідне інформаційне повідомлення.

Таким чином, якщо користувач введе ім’я категорії, він отримає перелік вибраних уручну вузлів, і якщо що-небудь ще, він отримає принаймні деякий вміст.

Окремо це легко. Але як поєднати ці поведінки в одному полі?


1
Окремо легко, з яким модулем ви працюєте, щоб мати автоматичне завершення на основі таксономії? Для мене фокусом буде невеликий javascript-код, який перевірить, чи немає результату, змініть дію кнопки "Відправити", щоб перенаправити на / пошук / yourkeywordsearch
sel_space

Відповіді:


17

Модуль Finder точно виконає вашу вимогу. Ви можете вибрати термін таксономії, а також назву вузла, тіло, поля, .. і т.д. для здійснення пошуку.

Існує багато способів зібрати функціональність пошуку, щоб отримати потрібну форму пошуку. Існує також багато гачків та тематичних функцій, що дозволяють повністю налаштувати вихідні дані.

Він використовується для цих цілей:

As a search tool to find a group of nodes or users.
As a way to navigate to a specific node or user page that matches criteria.
As an alternative to exposed filters for a Views module display.

Дивіться знімок екрана нижче: У полі пошуку можна вибрати терміни таксономії, а також тіло вузла для здійснення пошуку в автоматично заповненому відкритому полі, навіть ви можете виконати кілька пошукових ключових слів, розділених комою. Прочитайте документацію Finder для отримання додаткової інформації ..

введіть тут опис зображення

Після додавання елемента ви можете вибрати поля пошуку зі списку, утримуючи

Клавіша Ctrl, щоб вибрати термін таксономії , а також Node: Body


Він трохи старий і потребує співпрацівників, але схоже, що він задовольняє всі мої потреби. Потрібно перевірити це, але поки що, здається, це ідеальна відповідь для мого випадку використання.
Молото

Здається, це працює. Мені потрібно трохи налаштувати, але це може зробити роботу.
Молот

3

Я пишу без тестування, але у мене є відчуття, що ви можете використовувати це хоча б як вихідний пункт.

За допомогою модуля View Views Field View ви можете вбудовувати подання в інший вигляд, а також дозволяє передати контекстний фільтр до вбудованого подання.

У вашому випадку я створив би ще один перегляд, який містить контекстний фільтр, який шукає даний фільтр. Я не впевнений у цьому питанні, якщо ви можете здійснити пошук за допомогою контекстних фільтрів, але я бачив деякі варіанти, наприклад "Пошук: Термін" тощо.

Сказавши, що, якщо ви можете досягти цього першого кроку будь-яким чином, решта відносно проста.

У своєму початковому представленні ви додаєте "Поведінка без результатів" у розділі розширених параметрів і додаєте "Глобальний: Вид (вид поля перегляду)" і вибираєте створений раніше перегляд та передаєте маркер для відкритого фільтра як контекстний фільтр до вбудованого перегляду (ви можете знайти лексеми у списку для шаблонів заміни).


1
Цікава ідея, але я не міг змусити її працювати. Багато налаштувань, а потім Бала розмістив готовий модуль, і я втратив серце.
Молот

Так, я не знав про модуль Finder . Думаю, я буду використовувати його і в своїх проектах. Буду радий, якщо ви дасте нам коментар, якщо Finder зробить те, що ви очікуєте.
Елін Й.

3

Я пройшов вищезгадані обговорення, і, можливо, нижчевикладений сценарій може вирішити пост "Як поєднувати відкритий фільтр поглядів із пошуком?". Реалізація потребує певного користувацького кодування.

  1. Розглянемо URL-адресу http://www.seedandspark.com/studio .
  2. Тут, на лівій стороні, у вас є форма пошуку. Це спеціальна форма ( form_id = 'sns_studio_form_filter').
  3. У регіоні вмісту у нас є приблизно 7-8 блоків перегляду та вся генерація динамічної інформації (для анонімних користувачів лише 3 блоки)
  4. Тепер у нас відкриті фільтри, включені з кожним блоком перегляду.
  5. Ми зберегли ці відкриті фільтри прихованими від перегляду
  6. Ми зберігали конспекти структур URL, коли використовуємо фільтри, що відкрилися
  7. У нашому користувальницькому обробнику форми подання ми беремо інформацію з полів користувацької форми та генеруємо аналогічний URL, як ми зазначили на кроці 6. І, нарешті, ми переспрямовуємося до цієї URL-адреси. Це буде так у обробнику подання ::

    $form_state ['redirect'] = array(
      $path, 
      array(
        'query' => $params // $params is the url
      )
    );
    drupal_redirect_form( $form_state );

Отже, після виконання кроку 7, усі блоки перегляду фільтруються на основі критеріїв фільтра, які ви встановили.

Сподіваюся, це допомагає.


3

Існує також інший спосіб зробити це: ви можете спробувати модуль Concat Field . Ви в основному додаєте поле до типів вмісту, а потім можете використовувати фільтр за цим полем як пошук.

Я дуже згоден на Finder, я згоден, але я думаю, що це все-таки варто згадати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.