如何将语言portlet的配置更改应用于所有页面

时间:2015-05-21 09:33:19

标签: liferay liferay-6 liferay-theme liferay-velocity

我使用以下代码在liferay主题中添加语言portlet:

#set ($VOID = $velocityPortletPreferences.setValue('portletSetupShowBorders', 'false'))
#set ($portlet_id = '82')
#set ($instance_id = "239abc678iuy")
#set ($my_portlet_id = "${portlet_id}_INSTANCE_${instance_id}")
$theme.runtime($my_portlet_id, "", $velocityPortletPreferences.toString())
<{1>}中的

我在很多页面中使用相同的主题。问题是当我更改语言portlet的配置(例如添加或删除某些语言)时,修改仅应用于当前页面,而不应用于其他页面。

1 个答案:

答案 0 :(得分:0)

语言portlet的首选项每个布局唯一,这意味着每个页面都有自己的portlet配置。

liferay-portlet.xml中有一个设置可以控制它。它默认为true,这就是为什么在语言portlet的部分中没有提到它。

您有两种选择:

  1. 创建一个ext-plugin并重新定义liferay-portlet-ext.xml中的语言portlet:

    <portlet>
        <portlet-name>82</portlet-name>
        <icon>/html/icons/language.png</icon>
        <struts-path>language</struts-path>
        <!-- ... copy of all other lines of portlet 82 from liferay-portlet.xml -->
        <preferences-unique-per-layout>false</preferences-unique-per-layout>
    </portlet>
    
  2. 创建一个钩子插件并为PortletLocalService创建一个服务包装器,它返回一个portlet 82的自定义包装器,最后返回false的{​​{1}}。

    < / LI>