我有一个Liferay门户自定义主题,它通过portal_normal.vm中的一些标准Velocity代码在左侧部分嵌入一个portlet。当我第一次嵌入portlet时,我将属性portlet-setup-show-borders-default设置为“false”,这导致portlet呈现时没有标题栏或其他“chrome”(这不是我想要的)。 / p>
我将属性值更改为“true”,但我发现在我已经加载了portlet的页面上,它继续渲染而没有边框和“chrome”。但是,如果我加载了不同的页面,那么portlet会正确呈现。
如何强制Liferay在我访问过的第一页上正确地重新绘制portlet?我在Admin GUI中找不到任何东西(这是我更喜欢的),可能会强制清除它的一些缓存副本,并且很多Google搜索都没有显示任何有效的东西。我发现一篇文章看起来可能有用(http://www.liferay.com/community/forums/-/message_boards/message/772138),但Artur在第二条评论中发布的代码不适用于一般的portlet,只适用于Web Content portlet和文章。
有没有其他人遇到这个并找到了解决方案?请尽快告诉我!
提前致谢
- 乔 -
答案 0 :(得分:2)
最后在Liferay的社区论坛网站上找到了我需要的信息,尽管它需要在Google中使用非常特定的搜索字词才能找到它。在这里分享信息,以便其他人更容易(我希望)。
当portlet嵌入到主题中时,为该主题加载的每个页面都会将VelocityPortletPreferences设置存储在数据库的PortletPreferences表中。即使您更改了主题的模板代码中的首选项设置,Liferay也会忽略更改并使用DB中存储的首选项值。清除这些存储值的唯一方法是删除PortletPreferences表中与portlet ID相对应的行。
delete from PortletPreferences where portletId = '<your-portlet-id-here>'
完成此操作后(无需重新启动Liferay服务),您可以重新加载未正确显示的页面,现在他们将获取更新的首选项设置。
请注意,重新加载页面后,更新的首选项将再次存储在数据库中,因此,如果您需要进行其他更改,则必须再次删除该portlet的行。