【发布时间】:2015-07-14 06:27:05
【问题描述】:
我知道规范说的是另一个,但是有没有办法删除嵌入在布局中的 portlet?假设我在每个页面上都有带有搜索 portlet 的布局,但我希望它出现在除一个页面之外的每个页面上。
我已经尝试过这个主题:How to delete a portlet in Liferay 6.1 programmatically from code,使用 <a onclick="Liferay.Portlet.close('#p_p_id_3_'); return false;">Remove</a>
它可以工作,但是要删除的 portlet 是不必要的渲染并发送给客户端。
我也试过这段代码:
ThemeDisplay themeDisplay = (ThemeDisplay) req.getAttribute(com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);
Layout layout = themeDisplay.getLayout();
LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();
List<Portlet> portlets = layoutTypePortlet.getAllPortlets();
for (Portlet portlet : portlets) {
if(portlet.getPortletId().equalsIgnoreCase(portletToDeleteId)){
layoutTypePortlet.removePortletId(userId, portletToDeleteId);
LayoutLocalServiceUtil.updateLayout(layout);
}
}
但它不能列出嵌入在布局中的portlet;它只遍历我从门户手动添加的 portlet。
我以这种方式在布局中添加 portlet:$processor.processPortlet("3")
我在 Liferay Portal 6.2 GA4 工作。
TIA
【问题讨论】: