1

谁能告诉我如何在 Liferay 中动态更改页面布局。让我们假设我们有一个带有布局 2 列 (50/50) 的页面,并且这两个列都有 portlet。如果用户单击任何 portlet,我想将页面布局更改为 2 列 (70/30)。

4

3 回答 3

1

我从来没有试过,但你试过检查LayoutLocalServiceUtil.updateLayout()吗?

那应该对你有帮助。如果您要创建新页面,请LayoutLocalServiceUtil.addLayout()使用updateLayout().

获取布局,然后更新它。

layout = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId, false, friendlyURL);
于 2013-02-13T03:32:15.767 回答
0

添加到 - 如提供 -

layoutId = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId, false, friendlyURL);

传递新页面的friendlyURL,如果它是公共页面,则为false,否则为私有,并确保您已将一些布局应用于新页面(例如- 70/30)

使用此 layoutId -

" windowState="<%= WindowState.NORMAL.toString()%>">

将 portletId 提供给 portletname 字段。

于 2013-02-19T06:04:51.280 回答
0

下面是来自布局模板的示例 html 部分...

<div class="portlet-layout">
    <div class="aui-w70 portlet-column portlet-column-first" id="column-2">
        $processor.processColumn("column-2", "portlet-column-content portlet-column-content-first")
    </div>
    <div class="aui-w30 portlet-column portlet-column-last" id="column-3">
        $processor.processColumn("column-3", "portlet-column-content portlet-column-content-last")
    </div>
</div>

如果你仔细检查一下,有一些类描述了 div 的宽度,在我的示例中,aui-w70 用于宽度 70%,而 aui-w30 用于 30%。我相信你也会在你的布局中得到类似的东西。如果您可以根据需要在所需事件中更改班级名称,那么您很高兴......试一试......

于 2013-02-26T11:20:35.077 回答