dotCMS:如何对列表中的内容进行分页?

时间:2010-09-08 00:18:20

标签: macros dotcms

我正在开发一个dotCMS项目,我们正在编写HTML,Javascript和Velocity - 但没有Java(目前还没有)。

在dotCMS中,我需要遍历两个关系,以得出与结构A相关的结构C的所有项目的列表,其中结构A涉及与结构D相关的结构C.很好,我已经完成了这个和有一个我可以迭代的内容列表:http://pastebin.com/52uStcUA

问题是我需要对此列表进行分页,#pageContent()宏接受查询,而不是列表。我查看了dotCMS_library.vm中#pageContent()宏的来源,发现它调用了Java:ContentsWebAPI.pageContent() - 它只接受一个查询。

据我所知,这给我留下了两个选择:

1)以某种方式表达对#pageContent()宏的查询,该宏表示遍历传递关系。我知道如何为一个关系(http://pastebin.com/cwLY0Av4)而不是两个关系编写查询。

2)编写我自己的ContentsWebAPI.pageContent()的Java实现,坦率地说这听起来有些过分(也许只是漫长而痛苦的道路上的第一步)。

那么,关于如何解决这个问题的任何其他想法?

1 个答案:

答案 0 :(得分:2)

在速度中编写所需的分页逻辑应该相当容易 - Velocity中的$ list只是一个java.util.ArrayList。

dotCMS中包含的有用工具是$ listTool,请参阅:http://velocity.apache.org/tools/releases/velocity-tools-1.2/javadoc/org/apache/velocity/tools/generic/ListTool.html

这可以为您提供列表中的特定项目。你只需要一些变量,比如$ page,$ numShow等......你可以在url中传递$ page变量并用它来获取子列表等...