如何为Drupal View的模块创建自定义过滤器?

时间:2008-10-27 22:48:19

标签: php drupal drupal-6 drupal-views

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

那里有某个基本的'如何编写自定义drupal-views-filter'?我一直在寻找文档,但对于我的简单思维来说,如何做到这一点并不明显。

5 个答案:

答案 0 :(得分:3)

您可以创建自己的功能,如下所示添加自己的过滤器。

<?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);
}
?>

答案 1 :(得分:1)

我遇到了类似的问题,本文对解决问题非常有帮助。

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

答案 2 :(得分:0)

考虑到为我自己的网站安装的那种过滤器,有可能过滤器必须基于某些数据库字段,在这种情况下,你想要实现的是不可能的。似乎过滤器为生成的SQL查询提供WHERE子句。

说了这么多,如果你想进一步追求它,最好的办法是从一个已经为视图提供过滤器的模块开始。有针对节点模块的视图提供的过滤器;或者,您可以查看audio module,它也提供了一些过滤器。此外,发布到Drupal论坛或支持列表可能会打开另一个模块,让您实现您正在尝试的目标。

答案 3 :(得分:0)

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

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

  • 由drupal用户(drupal用户名:drupdrips)

答案 4 :(得分:0)

您可以使用viewsphpfilter模块,该模块允许按node id.进行过滤视图,但如果您需要为user views

进行扩展,则会有补丁