【问题标题】:Drupal Views api, add simple argument handlerDrupal Views api,添加简单的参数处理程序
【发布时间】:2010-06-16 18:43:54
【问题描述】:

背景:我有一个复杂的搜索表单,用于存储查询并将其散列在缓存中。设置缓存后,我重定向到 /searchresults/e6c86fadc7e4b7a2d068932efc9cc358 之类的东西,最后那个大长字符串是我查询的 md5 哈希。我需要为视图创建一个新参数,以了解哈希的用途。

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

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

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

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

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

【问题讨论】:

    标签: drupal views drupal-views drupal-modules handlers


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。实际上,我只花了几个小时就将视图 api 弄清楚到我正在完成我需要做的事情。我从来没有掌握它,但它有效!如果我能及时得到您的回复,您可能会为我节省一两个小时……哦,好吧。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多