Liferay 7.0下能否用Velocity设置Web内容content字段并实现日期切换?
没问题,这两个需求在Liferay 7.0里都能用Velocity脚本搞定,我给你一步步说清楚:
1. 能否用Velocity设置基础Web内容的content字段?
当然可以。在Liferay 7.0中,基础Web内容的模板支持Velocity语言,你可以在Web内容的Velocity模板里直接操作content字段——要么是基于原有content字段做逻辑处理,要么直接通过模板动态生成内容来替换它的展示。
需要注意的是,这里的操作是在Web内容模板渲染层面实现的,不是直接修改数据库里的原始content字段值,而是在前端展示时通过模板逻辑输出最终内容。
2. 实现日期切换展示的Velocity脚本
这个需求完全可以实现,核心是利用Liferay提供的$dateTool工具类来做日期比较。下面是直接可用的代码示例:
#set($targetDate = $dateTool.parse("2018-04-05", "yyyy-MM-dd")) #set($currentDate = $dateTool.toDate()) #if($dateTool.compare($currentDate, $targetDate) <= 0) Hello world #else Hola Mundo #end
代码说明:
$dateTool是Liferay内置的Velocity工具,专门用来处理日期解析、比较等操作parse方法把字符串格式的目标日期转换成可比较的Date对象,第二个参数是日期的格式(要和字符串日期匹配)compare方法的返回值规则:返回-1表示当前日期早于目标日期,0表示两者日期相同,1表示当前日期晚于目标日期- 根据比较结果,我们就能输出对应的内容
如果你的需求不是基于当前系统日期,而是基于Web内容自身的某个日期字段(比如发布日期、自定义日期字段),只需要把$currentDate替换成对应的字段即可。比如要基于Web内容的发布日期判断,可以写成:
#set($targetDate = $dateTool.parse("2018-04-05", "yyyy-MM-dd")) #set($articleDate = $article.getDisplayDate()) #if($dateTool.compare($articleDate, $targetDate) <= 0) Hello world #else Hola Mundo #end
内容的提问来源于stack exchange,提问作者ekxz900
相关产品推荐
相关产品推荐

