如何在FreeMarker模板中检查Liferay版本?

如何在FreeMarker模板中检查Liferay版本?,liferay,freemarker,liferay-theme,liferay-7.2,liferay-7.3,Liferay,Freemarker,Liferay Theme,Liferay 7.2,Liferay 7.3,我正在为Liferay开发一个主题,我希望同时使用Liferay的7.2版和7.3版。如何检查模板中使用的版本,以便执行以下代码: Liferay 7.3 Liferay 7.2 更新(2008年8月21日): 我已尝试使用assign获取服务(因为set无法在模板中使用),但serviceLocator为null尝试以下操作: set ($releaseLocalService = $serviceLocator.findService("com.liferay.portal.servic

我正在为Liferay开发一个主题,我希望同时使用Liferay的7.2版和7.3版。如何检查模板中使用的版本,以便执行以下代码:


Liferay 7.3

Liferay 7.2

更新(2008年8月21日):
我已尝试使用
assign
获取服务(因为
set
无法在模板中使用),但
serviceLocator
null
<代码>

尝试以下操作:

set ($releaseLocalService = $serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService"))
#set ($release = $releaseLocalService.getRelease(1))
#set ($vers = $release.getBuildNumber())

<span class="simpleVersion">$vers</span>
set($releaseLocalService=$serviceLocator.findService(“com.liferay.portal.service.releaseLocalService”))
#set($release=$releaseLocalService.getRelease(1))
#set($vers=$release.getBuildNumber())
$vers

如果您将其从Velocity移植到Freemarker并从受限变量集中删除
serviceLocator
(控制面板->配置->系统设置->模板引擎->Freemarker),Pratiks answer应该可以工作:


部署该模块后,Liferay实例中的所有Freemarker模板都应具有变量
myHelper
,以及您在类
myHelper
中添加的所有公共方法--其中一个可以返回您需要的修订号。

这似乎对我不起作用,它只显示页面中的文本。您不是想使用
$vers
吗@SamWM$vers从未在init_custom.ftl或portal_normal.ftl中设置
<#assign 
  releaseLocalService = serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService")
  release = releaseLocalService.getRelease(1)
  vers = release.getBuildNumber()
/>
<span class="simpleVersion">${vers}</span>
package my.own.template.context.contributor;

import com.liferay.portal.kernel.template.TemplateContextContributor;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import my.own.template.object.MyHelper;

@Component(
    immediate = true,
    property = "type=" + TemplateContextContributor.TYPE_GLOBAL,
    service = TemplateContextContributor.class
)
public class MyDisplayTemplateContextContributor
    implements TemplateContextContributor {

  @Override
  public void prepare(Map<String, Object> contextObjects, HttpServletRequest httpServletRequest) {
    contextObjects.put("myHelper", _myHelper);
  }

  @Reference(unbind="-")
  MyHelper _myHelper;

}