dotCMS:如何对列表中的内容进行分页?
我正在开发一个 dotCMS 项目,我们正在编写 HTML、Javascript 和 Velocity - 但没有 Java(目前还没有必要)。
在 dotCMS 中,我需要遍历两个关系以得出与实例结构 A 相关的结构 C 的所有项目的列表,其中结构 A 与结构 C 相关,结构 C 与结构 D 相关。很好,我已经完成了此操作并有一个列表我可以迭代的内容:http://pastebin.com/52uStcUA。
问题是我需要对此列表进行分页,并且 #pageContent() 宏仅接受查询,而不是列表。我查看了 dotCMS_library.vm 中 #pageContent() 宏的源代码,发现它调用 Java:ContentsWebAPI.pageContent() - 而后者只接受查询。
据我所知,这给我留下了两个选择:
1)以某种方式对 #pageContent() 宏进行查询,表达传递关系的遍历。我知道如何为一种关系 (http://pastebin.com/cwLY0Av4) 编写查询,但不知道如何为两种关系编写查询。
2) 编写我自己的 ContentsWebAPI.pageContent() 的 Java 实现,坦率地说,这听起来有点矫枉过正(也许只是漫长而痛苦的道路上的第一步)。
那么,关于如何解决这个问题还有其他想法吗?
I am working on a dotCMS project where we are writing HTML, Javascript and Velocity - but no Java (there has been no need yet).
In dotCMS, I need to traverse two relationships to come up with a list of all items of Structure C related to an instance Structure A where Structure A relates to Structure C which relates to Structure D. Fine, I have done this and have a list of content that I can iterate through: http://pastebin.com/52uStcUA.
The problem is that I need to paginate this list and the #pageContent() macro only accepts a query, not a list. I looked into the source of the #pageContent() macro in dotCMS_library.vm and found that it calls to Java: ContentsWebAPI.pageContent() - which in turn only accepts a query.
As far as I can see, this leaves me with two options:
1) Somehow phrase a query for the #pageContent() macro that expresses traversal of a transitive relationship. I know how to write a query for one relationship (http://pastebin.com/cwLY0Av4) but not two.
2) Write my own Java implementation of ContentsWebAPI.pageContent(), which frankly sounds like overkill (and perhaps just the first step down a long and painful road).
So, any other ideas on how to solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Velocity 中编写所需的分页逻辑应该相当容易 - 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 变量并使用它来获取子列表等...
It should be fairly easy to write the paging logic you need in velocity - the $list in Velocity is just a java.util.ArrayList.
A helpful tool that is included in dotCMS is the $listTool see: http://velocity.apache.org/tools/releases/velocity-tools-1.2/javadoc/org/apache/velocity/tools/generic/ListTool.html
This can give you specific items in your list. All you need are some variables like $page, $numShow, etc... You can pass around the $page variable in the url and use it to get sublists, etc...