目前,我有一个带有公开表单的视图,用于输入视图过滤器中使用的数字参数(距离,用于邻近搜索)。我想修改这个系统不再暴露,但是从例如开始10(英里)如果视图结果不包含足够的一种节点,请重复具有较大搜索距离的视图,直到得到我想要的结果,然后渲染视图。
这是视图2,位置,Drupal 6.
看起来像hook_views_pre_render(& $ view)是放置我的代码来检查视图返回的内容并相应地改变视图的地方,但我不知道是否应该或者如何调用视图再次从顶部修改$ view。
更新:看起来在hook_views_pre_render中,如果使用了寻呼机,则只能获取当前页面上显示的节点。我需要能够看到整个集合并重新排序。或者至少如果没有类型A的节点,则能够向下看列表并将A中的一个推广到当前页面。
答案 0 :(得分:0)
您要做的是按距离,升序排序结果,然后将输出限制为##结果。 (SQL应显示ORDER BY distance ASC LIMIT ##
)
如果确实希望模仿您的描述,您可以使用粒度与订购,但这似乎是您正在寻找的,并且在引擎上也会更快。
答案 1 :(得分:0)
对于这种非常自定义的请求,我可能只是制作一个带有页面的小模块,该模块将输入框中的所有内容都作为参数而不是过滤器。我从视图界面获取查询(所以我不必自己搞清楚)并将其更改为SELECT COUNT(*)类型查询,然后在循环中编写一些简单的代码 - 检查结果,如果它适当大,退出循环然后使用这些参数来构建视图。与试图弄清楚如何使用视图构建器小部件中的所有各种选项相比,这应该可以节省大量时间。