如何为Drupal视图模块创建自定义过滤器?

问题描述:

我在Drupal 6站点上安装了Profile,CCK和Views2模块。我向用户配置文件添加了一个字符串字段。我可以通过Views GUI构建器轻松过滤预设值,非常好。不过,我希望根据其他环境变量(即$_SERVER['SERVER_NAME'])动态设置过滤条件。如何为Drupal视图模块创建自定义过滤器?

在那里有一个基本的'如何写一个自定义drupal视图过滤器'吗?我一直在查看文档,但对于如何做到这一点我的简单想法并不明显。

有可能,已经查看了为我自己的网站安装的过滤器类型,过滤器必须基于某些数据库字段,在这种情况下,您尝试实现的是不可能的。看起来过滤器为生成的SQL查询提供了WHERE子句。说了这么多,如果你想进一步追求它,你最好的选择是从一个已经为Views提供过滤器的模块开始。有针对Node模块提供的视图过滤器;或者,您可以查看audio module,它也提供了一些过滤器。另外,张贴到Drupal论坛或支持列表可能会出现另一个模块,它可以让你实现你正在尝试的东西。

是的,你可以做到这一点。尝试使用模块“视图过滤器块”。一旦启用该块,在查看页面时从“查看源代码”中提取该块的html。现在禁用“视图过滤器块”...创建您自己的自定义块..添加代码与任何CSS你喜欢使它看起来漂亮。在这段代码中,使用php来动态地指定你想要的过滤器初始选择。确保你真的选择了过滤器所基于的字段..然后在自定义php块中使用php代码来编写IF条件来检查server_name值,并相应地为过滤器变量指定正确的值。“

其他(甚至可能更好)的方法来实际编写一个模块来使用过滤器,所以这只是一个建议,同时给“Views PHP Filter”一个试试看,我还没有使用它,但听起来像是值得一试。

  • 由Drupal的用户(Drupal的用户名:drupdrips)

您可以创建哟你自己的功能如下添加你自己的过滤器。

<?php custom_views_embed_view($view_name, $display_id) { 
$view = views_get_view($view_name); 
$view->set_display($display_id); 
$id = $view->add_item($display_id, 'filter', 'node', 'created', 
         array('value' => array('type' => 'date', 'value' => date('c')), 'operator' => '<=')); 
return $view->execute_display($display_id); 
} 
?> 
+0

@AbhiG你有没有尝试过这种方法吗?这似乎是一段有趣的代码。我应该把我的代码放在运算符中,替换' 2009-11-27 22:26:32

您可以使用viewsphpfilter模块,它由node id.允许过滤视图,但是有一个补丁,如果你需要延长本作user views

我有一个类似的问题,这篇文章非常有帮助的解决问题。

http://www.metaltoad.com/blog/drupal-7-tutorial-creating-custom-filters-views

而且hook_views_data公报文档

http://api.drupal.org/api/views/docs%21docs.php/function/hook_views_data/6