Tridion分页 - 获得结果总数

Jon*_*ams 10 paging tridion

我们正在编写一些代码来控制从Tridion Broker数据库查询返回的结果的分页(使用API​​).

我们正在使用SDL Tridion 2011 SP1,并且可以使用PagingFilter来获取所选页面上的组件的tcmIds.

但是,在写出分页控件时,我们需要知道结果的总数(以确定将有多少页).是否有更有效的机制来执行此操作,而不仅仅是为"所有"结果运行单独的查询并对返回的字符串数组执行.Length?(显然,您只会运行此查询一次,并在用户在页面之间点击时保留该值.)

如果我们得到了所有结果,那么当我们只处理"全部"查询中返回的信息时,为什么还要使用PagingFilter呢?

非常感谢Jonathan

注意:返回的任何一种类型最多可能有2000个结果.

Nic*_*kov 8

在组件发布期间,您可以实现TBB,该TBB计算所有已发布的组件,然后将结果作为使用标准system.io函数读取的二进制文件发布到文本或XML文件中.您还可以专门发布一个单独的DCP来保存计数(然后您需要每个发布的模式和组件).

我们的想法是在渲染时确定Count,并以某种方式发布该数字.在演示方面拉出一个数字肯定比拉动2000个DCP更快.


Mih*_*riu 6

我有3个可能的答案,虽然没有一个可能是正确的或你想要的答案.

  1. 无法使用CD API读取返回项的COUNT.你可以写出类似的扩展.无论是CD存储扩展,还是直接数据库查询等.

  2. 您可以阅读集合中确切的项目数.如果您使用组件查询,并且打算检索这些组件的DCP,这尤其棘手.可能是给定组件没有DCP,因此您需要首先读取所有DCP,以便知道要分页的项目的确切数量.显然这会破坏分页的整个目的.您可以通过运行一次查询来缓解此性能下降,然后将其缓存一段时间,但根据您查询的内容,可能是每个网站访问者查询不同的术语,因此性能损失很高.

  3. 您并不真正关心分页中的项目总数.例如,不是显示"第1页,共23页","第2页,共23页"等,而是只显示第1页,第2页,旁边有下一个和上一个按钮.

希望这可以帮助!