【问题标题】:Removing portlet embedded in Liferay Layouts删除嵌入在 Liferay 布局中的 portlet
【发布时间】: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

【问题讨论】:

    标签: layout liferay portlet


    【解决方案1】:

    是的,当然有一种方法:在该页面上使用不同的布局 - 最好是不嵌入搜索 portlet 的布局。

    页面特定的 CSS(包含用于搜索 portlet 的 display:none;)也会有些工作。是的,portlet 将被渲染和发送——但我们所说的性能影响是什么?它会产生任何可衡量的差异吗?如果是:从上面选择选项 1。如果没有:不要打扰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多