Drupal Views2 暴露形式

Posted

技术标签:

【中文标题】Drupal Views2 暴露形式【英文标题】:Drupal Views2 Exposed Form 【发布时间】:2011-05-02 19:28:03 【问题描述】:

不久前,您评论了一位发帖人关于如何更改 Drupal Views2 公开表单的问题。 In the post你提到的:

更改主题的正确方法是覆盖主题文件夹中的 views-exposed-form.tpl 文件。请记住,这将适用于所有公开的过滤器表单,要为特定的过滤器表单设置主题,您需要为该文件名使用不同的名称,例如:

views-exposed-form--TITLE--DISPLAY.tpl.php<br> views-exposed-form--TITLE.tpl.php

和其他一些人,您可以检查您的视图的主题:信息部分以了解模板命名约定。

您能否详细说明“标题”和“显示”的确切含义?两个模板文件都需要还是只需要其中一个?

谢谢。

【问题讨论】:

【参考方案1】:

我不是你所指帖子的作者,但我可以回答这个问题。

视图主题的工作方式是输出的特定部分有一个基本模板,并且可以通过向它添加额外的限定符来使这个基本模板更加具体。

如果您将 /sites/all/modules/views/theme/views-exposed-form.tpl.php 复制到您的主题文件夹(或从您安装了 Views 的任何位置),对副本进行更改,然后编辑您的视图并选择 Theme: Information 并单击 重新扫描模板文件,视图现在将在您的主题文件夹中使用此模板来呈现暴露的过滤器表单。这是基本模板名称,因此它将用于每个视图的公开过滤器表单。

如果您所做的更改应该应用于每个公开的过滤器表单,那么您就完成了。但是,您可能希望将此覆盖的模板文件限制为特定视图甚至特定视图的特定显示。如果您只想将模板应用于名为 testview 的视图,则可以将主题的 views-exposed-form.tpl.php 重命名为 views-exposed-form--testview.tpl.php。不要忘记在每次重命名或新文件后使用重新扫描模板文件按钮。现在该模板仅适用于视图 testview 及其所有显示。

一个视图可以有多个显示 - 可能是一个块、一个页面、一个管理员页面等。这些显示在视图编辑页面的左侧垂直下方。您可以获得更具体的内容并针对特定视图的特定显示。为此,您可以将此模板文件命名为 views-exposed-form--testview--page-1.tpl.php,这将导致它仅用于 testview 视图并且仅用于该视图的第一页显示。您可以通过将鼠标悬停在选项卡上找到显示名称 - 它会出现在您的浏览器在状态中显示的 URL 的末尾(默认、page_1 等)。请记住在模板文件名中将下划线转换为连字符:使用 page-1 而不是 page_1。

您还可以定位所有页面,例如:views-exposed-form--testview--page.tpl.php

这些命名约定以及可以覆盖的模板列表可在此处获得:http://views.doc.logrus.com/(单击查看模板文件)。

因此,如果您想要覆盖默认模板的特定显示或视图,那么您只需要针对该组合的单个文件。如果您需要定位其他视图或显示组合,您将拥有更多文件。

【讨论】:

哇,这是一个非常彻底的答案。谢谢你。我确实在使用views-exposed-form.tpl.php,但没有意识到如何将其命名为特定的,甚至是特定的page-1,但由于其他视图模板可以,这是有道理的。太糟糕了,它没有列在 Views 的 Theme: Information 部分,但至少我现在知道它是如何工作的。再次感谢。【参考方案2】:

您可以尝试使用Views exposed form layout 模块来获取从主题中公开的视图。

【讨论】:

我们希望答案不仅仅是链接到其他地方的解决方案,因为链接可能会停止工作。您能否编辑您的答案以包含链接文章相关部分的摘要?

以上是关于Drupal Views2 暴露形式的主要内容,如果未能解决你的问题,请参考以下文章

将 Drupal 中所有暴露的过滤器相互解耦,并将每个暴露的过滤器作为一个单独的块

Drupal 6 视图 2:PHP 片段

Drupal 6 & Views 2 - DISTINCT 字段

Drupal 视图 - 可以拆分暴露的表单吗?

Drupal 7 中暴露过滤器的删除或过滤选项

drupal 视图块参数