任何人都可以告诉我如何在Liferay中动态更改页面布局。 让我们考虑我们的页面有布局2列(50/50),这两列都有portlet。 如果用户点击任何portlet,我想将页面布局更改为2列(70/30)。
答案 0 :(得分:1)
我从未尝试过,但您是否尝试过检查LayoutLocalServiceUtil.updateLayout()
?
那应该对你有所帮助。如果您要创建新页面,请使用LayoutLocalServiceUtil.addLayout()
,否则请使用updateLayout()
。
获取布局,然后更新它。
layout = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId, false, friendlyURL);
答案 1 :(得分:0)
加入 - 如提供的那样 -
layoutId = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId,false,friendlyURL);
传递新页面的friendlyURL, 如果它是一个公共页面,那么false为私有, 并确保您已将一些布局应用于新页面(例如,70/30)
在 -
中使用此layoutId“windowState =”<%= WindowState.NORMAL.toString()%>“>
将portletId提供给portletname字段。
答案 2 :(得分: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%。我相信你的布局也会得到类似的东西。 如果您可以根据需要在所需的活动中更改课程名称,那么您很高兴... 试一试....