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

Macros dotCMS:如何对列表中的内容进行分页?,macros,dotcms,Macros,Dotcms,我正在从事一个dotCMS项目,我们正在编写HTML、Javascript和Velocity,但没有Java(还没有必要) 在dotCMS中,我需要遍历两个关系,以得出与实例结构a相关的结构C的所有项的列表,其中结构a与结构C相关,结构C与结构D相关。好的,我已经完成了这项工作,并且有一个可以迭代的内容列表: 问题是我需要对这个列表进行分页,而#pageContent()宏只接受一个查询,而不接受一个列表。我查看了dotCMS_library.vm中的#pageContent()宏的源代码,发现

我正在从事一个dotCMS项目,我们正在编写HTML、Javascript和Velocity,但没有Java(还没有必要)

在dotCMS中,我需要遍历两个关系,以得出与实例结构a相关的结构C的所有项的列表,其中结构a与结构C相关,结构C与结构D相关。好的,我已经完成了这项工作,并且有一个可以迭代的内容列表:

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

在我看来,这给我留下了两个选择:

1) 不知何故,对表示遍历可传递关系的#pageContent()宏的查询使用短语。我知道如何为一个关系()而不是两个关系编写查询

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


那么,关于如何解决这个问题还有其他想法吗

在velocity中编写所需的分页逻辑应该相当容易——velocity中的$list只是一个java.util.ArrayList

dotCMS中包含的一个有用工具是$listTool,请参见:

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