我正在为网站模板和网站制作POC。我能够将更改从站点模板传播到站点,但有些东西似乎不太令人欣慰:
我在这做什么:
现在,我收到一条消息“重置更改”(因为网站更改与其模板不同)。所以我进行了重置,所有网站级别的变化都像wiki和民意调查一样丢失了。
我知道我们可以在网站创建后禁用这些更改的传播,但是我们需要根据这个要求将应该传播的网站模板中的内容更新到使用该模板的所有网站,确保所有站点级别更改已生效。
问题:
有没有办法可以维持网站级别的变化,以及网站模板中的新变化(重置似乎不符合此要求)?
注意:我们正在寻找Liferay的开箱即用解决方案,然后再进行任何定制(但欢迎任何想法)。
Liferay版本:Liferay Portal社区版6.2 CE GA2(Newton / Build 6201/2014年3月20日)
任何指针都会有很大的帮助。
干杯!! AJ
答案 0 :(得分:0)
我遇到了与我正在进行的项目类似的问题。带有传播的网站模板的主要缺点正是您所描述的 - 子网站上的任何更改都可以通过此传播消除。
我采用了一种利用OOTB liferay功能的方法,但需要通过嵌入式portlet进行页面布局更改的开发工作。您还可以在布局中嵌入一些基本的portlet配置。这是我们正在使用的其中一个布局的片段:
#set($customTitlePreference = "<preference><name>portletSetupUseCustomTitle</name><value>true</value></preference>")
#set($noBorderPreference = "<preference><name>portletSetupShowBorders</name><value>false</value></preference>")
#set($basicPreferences = "<portlet-preferences>${customTitlePreference}${noBorderPreference}</portlet-preferences>")
<div class="three_columns" id="main-content" role="main">
<div class="portlet-layout">
<div class="portlet-column portlet-column-first" id="row-1-column-1">
$theme.runtime("85", "", "${basicPreferences}")
$theme.runtime("56_INSTANCE_RELATED", "", "${basicPreferences}")
$processor.processColumn("row-1-column-1", "portlet-column-content portlet-column-content-first")
</div>
</div>
</div>
这只是第一列,但它显示了站点地图(pid 85)和带有指定instanceId(pid 56)的Web内容显示。这是三列中的第一列,这种技术可以无缝折叠到所有布局组件中。
每个页面都可以有自己的布局,或者您可以在不同的页面上重复使用布局。对部署到服务器的布局的任何更新都将使用布局传播到每个页面,但不会破坏对页面进行的自定义。唯一的功能缺点是portlet只能添加到每列的底部,因为嵌入的portlet将首先呈现。你可以通过在布局中巧妙地使用行和列来规避这一点。