Можно ли передать номер версии Liferay в шаблон скорости темы? - PullRequest
3 голосов
/ 09 марта 2012

В настоящее время я работаю над обновлением темы Liferay, которая была построена для Liferay 6.0, а также должна быть совместима с Liferay 6.1 (короче говоря, она должна быть совместима с обоими для целей использования на нескольких клиентах).).

Насколько я понимаю, имена различных переменных предпочтений портлета изменились с 6.0 до 6.1 - например, "portlet-setup-show-border" теперь является camelCased: "portletSetupShowBorders".Поскольку моя тема содержит несколько портлетов, мне нужно изменить имя этих переменных при развертывании темы в 6.1, но оставить ее в том виде, в каком она есть в 6.0.

Мой вопрос:У Liferay есть переменная, к которой я могу получить доступ в рамках темы, которая скажет ей, на какой версии Liferay она работает в настоящее время?Это сделало бы мою жизнь намного проще.

Вот что у меня сейчас есть:

$velocityPortletPreferences.setValue("portlet-setup-show-borders", "false")
$velocityPortletPreferences.setValue("group-id", "$group_id")
$velocityPortletPreferences.setValue("article-id", "$toprightArticleId")
$theme.runtime("56_INSTANCE_RIGHT", "", $velocityPortletPreferences.toString())
#set ($VOID = $velocityPortletPreferences.reset())  

Вот пример того, чего я хотел бы достичь (очевидно, не работает,но это то, что я хочу сделать):

#if ($themeVersion == "6.0")
    $velocityPortletPreferences.setValue("portlet-setup-show-borders", "false")
    $velocityPortletPreferences.setValue("group-id", "$group_id")
    $velocityPortletPreferences.setValue("article-id", "$toprightArticleId")
    $theme.runtime("56_INSTANCE_RIGHT", "", $velocityPortletPreferences.toString())
    #set ($VOID = $velocityPortletPreferences.reset())
#end
#if ($themeVersion == "6.1")
    $velocityPortletPreferences.setValue("portletSetupShowBorders", "false")
    $velocityPortletPreferences.setValue("groupId", "$group_id")
    $velocityPortletPreferences.setValue("articleId", "$toprightArticleId")
    $theme.runtime("56_INSTANCE_RIGHT", "", $velocityPortletPreferences.toString())
    #set ($VOID = $velocityPortletPreferences.reset())
#end

Кто-нибудь решил эту проблему, и хотел бы помочь мне.Спасибо!

1 Ответ

3 голосов
/ 09 марта 2012

Имея

journal.template.velocity.restricted.variables=

в portal-ext.properties вы можете использовать

#set($pu = $serviceLocator.findService("com.liferay.portal.service.PortalService"))
$pu.getBuildNumber()

В случае 6.0.6 вы получите 6006 за 6.1, вы получите 6100 (это целые числа)

Так например

#if ($pu.getBuildNumber() >= 6000 && $pu.getBuildNumber() < 6100)
    this is Liferay 6.0.x
#end

#if ($pu.getBuildNumber() >= 6100 && $pu.getBuildNumber() < 6200)
    this is Liferay 6.1
#end
...