我在Drupal中配置了一个View来返回节点,按照平均投票顺序对它们进行排序。出于视图的目的,平均投票的价值是关系。我注意到,在平均值为负的节点之后显示没有投票的节点。没有投票的节点应该平均为0,但我相信MySQL JOIN
导致返回NULL
值(因为在连接表中没有匹配的行,因为在之后创建了一行第一次投票是针对该项目的。)
我发现使用MySQL可以将列中NULL
的所有值输出为IFNULL(column_name,'other value')
的另一个值。
我觉得我需要修改Views模块才能获得此功能,但我希望有某种选项可以在关系中返回NULL
值(关系不是项目存在为0而不是NULL
,以便我可以正确地对节点进行排序。
我使用的模块包括Views,Voting API,Vote Up / Down和CTools。
感谢。
答案 0 :(得分:1)
哦,请不要直接修改视图。
只需编写插件即可。它都是面向对象的,所以你只需编写一个字段处理程序来扩展该字段的现有处理程序。 hook_views_handlers
是开始的地方。
您需要做的就是复制粘贴现有的处理程序,对SQL进行调整,并为该字段指定一个新名称。它会显示在可用字段列表中,与其他字段一样。
- 编辑 -
如果您以前从未这样做过,那么视图文档起初可能会有点混乱,但是一旦您获得“ahah!”它就会非常简单。时刻。
一个好的起点是查看扩展视图的其他模块,并复制他们的技巧。 http://views2.logrus.com/doc/html/index.html上的文档将帮助您了解对象的映射方式。
就个人而言,我会使用->render()
方法而不是->query()
方法进行修改。这样你就可以添加一个简单的if (is_null($value)) {$value = 0;}
而不是使用SQL技巧。