Drupal 7 Views 3:搜索特定字段的公开过滤器
Posted
技术标签:
【中文标题】Drupal 7 Views 3:搜索特定字段的公开过滤器【英文标题】:Drupal 7 Views 3: Exposed Filters that search specific FIELDS 【发布时间】:2011-08-26 10:07:02 【问题描述】:非常感谢您对此的帮助。
我正在尝试在视图中创建两个不同的公开过滤器。我目前有 6,000 个节点,每个节点包含一个内容类型中的 75 个字段。我在块中使用带有公开表单的页面视图。我还安装了 Better Exposed Filters 模块。
第一个,我想制作一个文本框来搜索字词,但它只搜索我指定的字段。我会让它搜索 3 个字段(对全名进行搜索):名字、中间名、姓氏。他们都在不同的领域。 到目前为止,我唯一能够使其搜索的是内容类型中的每个术语(它搜索每个字段,而不仅仅是名称)。我通过暴露这个过滤器来做到这一点:
Search: Search Terms
The terms to search for.
我尝试做的下一个过滤器是“毕业班”字段。最好也为此进行搜索(如果我能弄清楚如何搜索一个字段,如上所示),但我希望有一个选择下拉列表,列出每个毕业班。该领域的这些课程范围从 1905 年到 1972 年。当您单击此框中的年份时,它会按该年份过滤当前结果。
这听起来很基本,但我似乎无法理解,非常感谢一些帮助。
供您参考(如果需要),以下是我可以添加的过滤器类型。 (题外话:我实际上不太确定 ":format" 到底是什么)。对于“内容:”过滤器,我将只显示“名称”过滤器,因为还有 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.
【问题讨论】:
【参考方案1】:我可能不太了解你,但你不想用:
Content: First Name (field_cinfo_fname)
Content: Middle Name (field_cinfo_mname)
Content: Last Name (field_cinfo_lname)
作为您的过滤器?
我猜你的字段是文本区域,这就是你有 :format 选项的原因; 'format' 是 longtext 字段类型中的另一列,因此可用(就像 'alt' 和 'title' 可用于图像字段类型)。
【讨论】:
噢!我想每个人都建立了他们的第一个 Drupal 站点。【参考方案2】:如果我正确理解了这个问题,您有三个名称字段,并且您需要一个文本框来搜索所有三个字段。最简单的方法是将这三个字段组合成一个字段,该字段不显示,但可以使用公开的过滤器进行搜索。一种选择是使用Auto Nodetitle 模块使节点标题成为三个名称的组合。 (我经常对人员目录执行此操作,以便给定条目显示为姓氏、名字)。然后您可以在暴露的过滤器中搜索节点标题。
如果您的项目不能选择使用标题,您可以在内容类型中添加另一个字段,例如:full_name,然后编写一个小模块来实现 hook_node_save,只需将 full_name 字段填写为“first保存节点时的中间最后一个”。然后从显示中删除 full_name 字段并将其用于暴露的过滤器。
re:毕业年份:如果您使用“列表(整数)”字段类型,那应该没问题。如果您使用的是纯文本字段类型,那会使事情变得更加困难。如果您使用的是纯文本,您可能需要重做该字段,以便您可以做一些很酷的过滤器,例如“1950 年之前毕业”类型的过滤器或使用 jQuery 滑块来选择毕业年份的范围。
希望对您有所帮助。
【讨论】:
以上是关于Drupal 7 Views 3:搜索特定字段的公开过滤器的主要内容,如果未能解决你的问题,请参考以下文章
字段集合替代?需要可通过 Search API 搜索的子字段(Drupal 7)