我使用以下代码在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的配置(例如添加或删除某些语言)时,修改仅应用于当前页面,而不应用于其他页面。
答案 0 :(得分:0)
语言portlet的首选项每个布局唯一,这意味着每个页面都有自己的portlet配置。
liferay-portlet.xml
中有一个设置可以控制它。它默认为true
,这就是为什么在语言portlet的部分中没有提到它。
您有两种选择:
创建一个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>
创建一个钩子插件并为PortletLocalService创建一个服务包装器,它返回一个portlet 82的自定义包装器,最后返回false
的{{1}}。