如何为每个视图显示命名views-exposed-form.tpl.php


8

我试过了,views-exposed-form--"view_name"--"display_name".tpl.php但是没有用。是否可以制作仅适用于视图公开过滤器的模板文件?

我在同一视图中有两个来自不同显示器的暴露滤镜,并且我想通过两个模板文件为这两个暴露滤镜设置不同的主题。


不,我正在尝试。但这不起作用。

这并不是对这个问题的真正答案。也许最好再问一个问题,并解释现有解决方案如何以及为什么不为您服务?
Neograph734 '16

这不能为问题提供答案。一旦您拥有足够的声誉,您就可以在任何帖子中发表评论;相反,请提供不需要问询者澄清的答案。- 评论
肖恩·康

Answers:


2

在Drupal中一切皆有可能;)

视图可能不会自动为暴露的过滤器提供模板建议,就像它为字段本身一样。因此,您需要为此做更多的工作:

  1. 使用devel_themer模块可以找出该公开过滤器主题的功能/模板。
  2. 为该主题功能/模板创建一个预处理器。然后,您可以在预处理器中插入动态模板建议,这些建议将根据您想要的任何条件触发。您可以在自定义主题的template.php文件或自定义模块之一中创建此预处理器。本DO文章将指导您创建动态模板建议。

我假设您将基于URL路径显示不同的“视图”显示。如果是这种情况,则可以arg()在预处理器中使用Drupal 函数确定当前正在显示的View显示内容,并使用该信息构造模板建议。

正确设置建议后,Drupal会自动调用相应的模板并根据路径(或在预处理器中指定的任何其他条件)使用不同的过滤器模板。


25

对于Drupal 7,可以使用views-exposed-form--view_name--display_name.tpl.php(用下划线在视图名称和显示名称中替换下划线。)

这样对我有用。


这对我有效。这是我的公开表单模板名称的示例:views-exposed-form--trunk_shows--panel-pane-1.tpl.php
albertski 2016年

即使执行此操作时可能未列出views-exposed-form--view_name--display_name.tpl.php,在添加新模板文件时,您也应该编辑视图,请单击Advanced-> Other-> Theme ->信息,然后单击重新扫描模板文件按钮。
kbrinner '16

如果不需要使用特定的显示名称,则不需要该显示名称。对于我的块视图,“事件视图”将模板文件命名为“ views-exposed-form--events-view.tpl.php”,对我来说很有效。谢谢@kaimlaluno。这可能应该是公认的答案。
ProGrammar

3

在drupal8中

/ admin / structure / views / view / event_related

将会

views-exposed-form--event_related.html.twig


1

对于drupal 8,主题调试模式不会显示可用的模板建议。您可以使用kint()找出哪些可用的,或在此挂钩中创建新的:

/**
 * Implements template_theme_suggestions_node_HOOK_alter().
 * Add theme suggestions to the view exposed forms.
 */
function YOUR_THEME_theme_suggestions_views_exposed_form_alter(&$suggestions, $vars, $hook) {
  kint($vars['form']['#theme']);
  //$suggestions[] = 'views__exposed__form__' . $anything; 
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.