如何将公开的过滤器查询重定向到另一个面板页面中的视图结果页面?


8

我的设置:Drupal 7.2,面板7.x-3.0-alpha3,视图7.x-3.0-beta3,混沌工具套件7.x-1.0-beta1

假设我要创建一个水果目录网站。在视图中,我有一个内容窗格“水果”,其中包含基于分类法“颜色”的暴露过滤器。该网站应该有两个面板页面。第一面板页面仅显示暴露的过滤器框“搜索水果”,其中带有下拉菜单的“颜色”和搜索按钮。从下拉菜单中选择并单击搜索按钮后,应该将用户重定向到第二个面板页面,该页面包括视图的内容窗格,该窗格显示与过滤器(颜色)匹配的水果列表。

问题是:单击“应用”按钮后,首页上暴露的筛选器框将不会重定向到结果页面。如何设置视图和面板以实现此目的?

Answers:


7
function hook_form_alter(&$form, &$form_state, $form_id) {  
  if ($form_id=='views_exposed_form') {
    global $base_url;
    $form['#action'] = $base_url.'/path_that_you_want'; 
  }
}

这可以正常工作,但是我认为您可能应该使用而不是使用$ base_url url('path_that_you_want')
约翰·菲亚拉

1
我尝试没有成功,实际上我的'action'属性表示另一个目的地,如何解决这个问题?
sokratis 2015年

嘿,我在哪里添加此代码,请让我知道谢谢
React Developer

0

我不确定是否有“正确”的方法,但是我通过为暴露的过滤器表单编写hook_form_alter来更改目标来实现了这一点。

不理想,但是我得到了所需的结果。


你是怎么做的?您能发布您的代码吗?
米歇尔

0

最简单的解决方案是

  • 创建一个视图页面
  • 创建一个公开的视图
  • 在高级>公开形式下。设置“块中的暴露形式:是”
  • 将块“暴露的形式:...”添加到所需的首页。

0

最简单的解决方案是创建视图页面在高级>公开表单下创建公开视图。在块中设置“暴露的形式:是”将块“暴露的形式:...”添加到所需的首页。

Interlated的上述正式通知使我半途而废地使用了暴露的过滤器块来打开并在新页面上显示结果。

但是,我还需要过滤器块位于该结果页面上。所以我通过标题中的视图区域附加了表单(暴露的过滤器块)。然后,当两者在同一视图中显示时,我遇到了递归行为。

为了解决这个问题,我将两个显示(页面和块)分别放在各自的视图中-创建了一个块作为公开的过滤器,其中包含结果字段,然后创建一个全新的页面视图以获取URL。页面视图有一个字段(标题),该字段被覆盖为空白(主要是因为结果将是多余的,但也不准确-我发现结果是从暴露的过滤器块中的字段准确显示的)。我在两个显示器之间都保留了相同的过滤设置,并在两个显示器上都使用了Ajax,从而使用了更好的暴露过滤器

我在D8中做到了,但可能在7时是一样的。

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.