Как реализовать поиск по нескольким полям, ограниченным одним типом контента в drupal 7


Я создал новый тип контента, в котором есть несколько полей (некоторые из них являются пользовательскими полями, которые я создал сам). Теперь мне нужно реализовать функцию поиска по каждому из этих полей.

Это означает, что если у меня есть эти поля:

  • ВИДЕОКВ (поле видео)
  • Профессия (текстовое поле)
  • Водительские права (списки выбора)
  • Регион рождения (термин таксономии)

Мне нужен модуль поиска с этими четырьмя полями, чтобы при поиске для профессии "инженер" он ищет только данные, введенные в это конкретное поле.

Что мне нужно сделать? Какие дополнительные модули мне следует установить? Что мне делать с моими пользовательскими полями?

Author: Sithu, 2011-07-04

6 answers

Если вам нужно получить доступ к узлам в коде, решение delmi должно работать.

Если вы хотите использовать существующие модули, представления должны сделать свое дело. Я нашел видеоуроки NodeOne по просмотру очень полезными: http://dev.nodeone.se/node/781

 2
Author: Sam King, 2012-03-05 23:47:06

Я не эксперт по D7, но я могу попробовать с помощью запроса entityfield, подобного этому:

$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
                ->entityCondition('bundle', 'YOUR_CONTENT_TYPE_NAME')
                ->propertyCondition('status', 1)
                ->fieldCondition('YOUR_FIELD_NAME', 'value', $searchterm)
                // other conditions...
                ->propertyOrderBy('title')
                ->execute();
$nodes = entity_load('node', array_keys($entities['node']));
 2
Author: delmi, 2012-01-07 13:13:23

Интересно, помогут ли вам Представления и Более открытые фильтры ? Создайте представление страницы, предоставьте свои фильтры полей, затем в столбце "Дополнительно" появится возможность отображать открытые фильтры в структуре > блоки.

 1
Author: davidgmar, 2012-02-14 16:25:39

Создайте представление вашего типа контента и добавьте все поля, которые вы хотите найти, в качестве доступных фильтров. Это создает форму поиска с элементами ввода для всех отфильтрованных полей (или только для одного, если это то, что вы хотите). Вы можете настроить его так, чтобы он фильтровал только заполненные поля ввода и игнорировал остальные.

Это позволяет вам разместить форму поиска в верхней части вашего представления или переместить ее в отдельный блок.

 0
Author: BetaRide, 2012-01-13 20:37:15

Используйте модуль Finder для создания поиска по конкретным полям (основной поиск Drupal - это полнотекстовый поиск, а не поиск по конкретным полям). Вот выдержка об этом со страницы проекта модуля:

... позволяет администраторам сайтов Drupal создавать гибкие фасетные формы поиска для поиска объектов, таких как узлы или пользователи, на основе значений полей и атрибутов базы данных.

Обычно Finder используется для этих целей:

  • В качестве инструмента поиска для поиска группы узлов или пользователей.
  • Как способ перехода к определенному узлу или странице пользователя, которая соответствует критериям.
  • В качестве альтернативы открытым фильтрам для отображения модуля представлений.
 0
Author: rogerhoward, 2020-06-15 09:13:00

Решение 1

Просмотры 3 предоставляют решение вашего вопроса из коробки. Это фильтр Global: Combine fields.

  1. Добавление полей

  2. Добавьте Global: Combine fields фильтр к критериям фильтрации

  3. Отметьте поля, которые вы хотите объединить в настройках фильтра

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

Решение 2

Фильтры представлений заполняют - хороший модуль. Но есть 1 проблема "заполняет только СТРОКОВЫЕ фильтры".

Для получения дополнительной информации обратитесь к Представления вопрос о Применение одного открытого фильтра к нескольким полям.

 0
Author: milkovsky, 2017-04-13 12:47:08