Drupal视图:将关系的空结果渲染为0

时间:2011-01-06 23:48:24

标签: drupal drupal-views

我在Drupal中配置了一个View来返回节点,按照平均投票顺序对它们进行排序。出于视图的目的,平均投票的价值是关系。我注意到,在平均值为负的节点之后显示没有投票的节点。没有投票的节点应该平均为0,但我相信MySQL JOIN导致返回NULL值(因为在连接表中没有匹配的行,因为在之后创建了一行第一次投票是针对该项目的。)

我发现使用MySQL可以将列中NULL的所有值输出为IFNULL(column_name,'other value')的另一个值。

我觉得我需要修改Views模块才能获得此功能,但我希望有某种选项可以在关系中返回NULL值(关系不是项目存在为0而不是NULL,以便我可以正确地对节点进行排序。

我使用的模块包括Views,Voting API,Vote Up / Down和CTools。

感谢。

1 个答案:

答案 0 :(得分:1)

哦,请不要直接修改视图。

只需编写插件即可。它都是面向对象的,所以你只需编写一个字段处理程序来扩展该字段的现有处理程序。 hook_views_handlers是开始的地方。

您需要做的就是复制粘贴现有的处理程序,对SQL进行调整,并为该字段指定一个新名称。它会显示在可用字段列表中,与其他字段一样。

- 编辑 -

如果您以前从未这样做过,那么视图文档起初可能会有点混乱,但是一旦您获得“ahah!”它就会非常简单。时刻。

一个好的起点是查看扩展视图的其他模块,并复制他们的技巧。 http://views2.logrus.com/doc/html/index.html上的文档将帮助您了解对象的映射方式。

就个人而言,我会使用->render()方法而不是->query()方法进行修改。这样你就可以添加一个简单的if (is_null($value)) {$value = 0;}而不是使用SQL技巧。