2

背景:我有一个复杂的搜索表单,它将查询存储在缓存中,并将其散列。一旦设置了缓存,我就会重定向到/searchresults/e6c86fadc7e4b7a2d068932efc9cc358最后那个大长字符串是我查询的 md5 哈希的地方。我需要为视图提出一个新论点,以了解哈希的用途。

所有这些麻烦的原因是因为我的原始搜索表单过于复杂,并且有很多参数可以考虑将它们全部放入路径并期望使用普通视图参数进行过滤。

现在我的问题。我一直在阅读views 2 文档,但没有弄清楚如何完成这个自定义参数。在我看来,这不应该像我认为的那么难。抛开任何关于 veiws api 的知识,似乎我需要的只是一个回调函数,它将从路径中获取参数,因为它是唯一的参数,并返回要过滤的节点 ID 列表。

谁能指出我的解决方案或给我一些示例代码?

谢谢你的帮助!你们太棒了。

PS。我很确定我的设计是我能想到的最好的,如果我们能提供帮助,请不要忘记我的问题并交叉检查我的设计逻辑。

4

1 回答 1

1

这并不像你想的那么容易。

在视图中,参数用于返回对象、fx 用户、节点、术语、自定义对象。因此,您可以编写一些自定义代码来获取“查询对象”。那只是第一步。然后,您需要从查询对象中获取信息。您可以尝试与节点建立自定义关系绑定,也可以构建自己的过滤器来生成所需的 SQL。这很快就会成为一个令人困惑的时间槽。

相反,我建议您使用hook_views_query_alter,这将允许您更改查询。由于您已经拥有 SQL,因此只需检查散列,如果存在,请更改查询。应该是一件很简单的事情。唯一有点棘手的是,您必须使用视图使用的查询对象进行查询,但这并不难弄清楚。

于 2010-06-17T07:19:23.467 回答