Drupal 7 Просмотры 3: Открытые фильтры, которые ищут конкретные поля - PullRequest
2 голосов
/ 26 августа 2011

Я бы очень признателен за помощь.

Я пытаюсь создать два разных открытых фильтра в представлениях. В настоящее время у меня есть 6000 узлов с 75 полями в каждом типе контента. Я использую Page View с открытой формой в блоке. У меня также установлен модуль Better Exposed Filters.

Во-первых, я хочу создать текстовое поле для поисковых терминов, , но оно должно выполнять поиск только в моих указанных полях . Я хотел бы, чтобы он искал 3 поля (чтобы сделать поиск по полному имени): Имя, Отчество, Фамилия. Они все в разных областях. Единственное, что мне удалось сделать, это выполнить поиск КАЖДЫЙ СРОК в типе контента (где он ищет каждое поле, а не только имя). Я сделал это, выставив этот фильтр:

Search: Search Terms
The terms to search for.

Следующий фильтр, который я пытаюсь сделать, - это поле "Graduation Class". Для этого также может быть лучше выполнить условия поиска (если я могу выяснить, как искать в ОДНОМ поле, как описано выше), но я надеялся получить выпадающий список, в котором перечислены все классы выпускных. Эти занятия в этой области варьируются от 1905-1972 гг. Если щелкнуть год в этом поле, он отфильтрует текущие результаты по этому году.

Это звучит довольно просто, но я не могу понять это и ДЕЙСТВИТЕЛЬНО оценил бы некоторую помощь.

Для справки (при необходимости) вот типы фильтров, которые я могу добавить. (Не по теме: на самом деле я не совсем уверен, что это за ": format") . Для фильтров «Content:» я буду показывать только «Name», потому что есть еще 73. Многие из этих фильтров взяты из модуля Feeds, потому что это то, что я использовал для импорта своих узлов:

Content: First Name (field_cinfo_fname)
Appears in: node:cadet.

Content: First Name (field_cinfo_fname:format)
Appears in: node:cadet.

Content: Middle Name (field_cinfo_mname)
Appears in: node:cadet.

Content: Middle Name (field_cinfo_mname:format)
Appears in: node:cadet.

Content: Last Name (field_cinfo_lname)
Appears in: node:cadet.

Content: Last Name (field_cinfo_lname:format)
Appears in: node:cadet.

Content access: Access
Filter for content by view access. Not necessary if you are using node as your base table.

Content revision: Log message
The log message entered when the revision was created.

Content revision: Title
The content title.

Content revision: Updated date
The date the node was last updated.

Content revision: Vid
The revision ID of the content revision.

Feeds item: Import date
Filter on a Feeds Item's import date field.

Feeds item: Item GUID
Filter on a Feeds Item's GUID field.

Feeds item: Item URL
Filter on a Feeds Item's URL field.

Feeds item: Owner feed nid
Filter on Feed Items by the Feed they were generated from using the Node Id of the Feed Node.

Feeds log: Feed node id
Filter on a Feeds Source's feed_nid field.

Feeds log: Importer id
Filter on an importer id.

Feeds log: Log time
The time of the event.

Feeds log: Request time
The time of the page request of an event.

Feeds log: Severity
Filter on the severity of a log message.

Feeds source: Feed node id
Filter on a Feeds Source's feed_nid field.

File Usage: Entity type
The type of entity that is related to the file.

File Usage: Module
The module managing this file relationship.

File Usage: Use count
The number of times the file is used by this entity.

Page Title: Title
A Page Title alternative to the Node: Title field.

Search: Links from
Other nodes that are linked from the node.

Search: Links to
Other nodes that link to the node.

Search: Search Terms
The terms to search for.

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Возможно, я вас немного понимаю, но разве вы не хотите использовать:

Content: First Name (field_cinfo_fname)
Content: Middle Name (field_cinfo_mname)
Content: Last Name (field_cinfo_lname)

в качестве фильтров?

Я предполагаю, что ваши поля - это текстовые области, поэтомуу вас есть: параметры формата;'format' - это еще один столбец в поле типа длинного текста, поэтому он будет доступен (точно так же, как 'alt' и 'title' будут доступны для типа поля изображения).

0 голосов
/ 31 августа 2011

Если я правильно понял вопрос, у вас есть три поля имени, и вы хотите, чтобы одно текстовое поле осуществляло поиск во всех трех полях.Самый простой способ сделать это - объединить эти три поля в одно поле, которое не отображается, но может быть найдено с помощью открытого фильтра.Один из вариантов - использовать модуль Auto Nodetitle , чтобы сделать заголовок узла комбинацией трех имен.(Я часто делаю это с каталогами персонала, чтобы данная запись отображалась как Фамилия, Имя).Затем вы можете выполнить поиск по названию узла в вашем открытом фильтре.

Если использование заголовка не является опцией для вашего проекта, вы можете добавить другое поле для вашего типа контента, например: full_name, и написать небольшоемодуль для реализации hook_node_save , который бы просто заполнил поле full_name "first middle last" всякий раз, когда узел сохраняется.Затем удалите поле full_name с дисплея и используйте его для вашего открытого фильтра.

re: выпускной: если вы используете тип поля «Список (целое число)», это не должно быть проблемой.Если вы используете простой текстовый тип поля, это усложняет задачу.Если вы используете простой текст, вы можете переделать поле, чтобы можно было использовать классные фильтры, такие как фильтры типа «градуированный до 1950 года», или использовать ползунки jQuery для выбора диапазона лет выпуска.помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...