对于由Liferay EE 6.0 SP1提供支持的网站,有些页面需要“共享”某些portlet的相同实例,但其他页面将拥有自己的实例。
例如(设计,但希望是说明性的),考虑一个具有更改portlet背景颜色的首选项的portlet。
假设我们有以下页面(该页面上的portlet背景颜色遵循此列表中的页面名称):
Home (green) ├─ About (blue) │ └─ Contact (blue) ├─ Products (orange) │ ├─ AXL-900 (orange) │ └─ VCC-218 (orange) ├─ Support (red) │ └─ VIP (gold) └─ Legal (green)
请注意,在多个页面上,portlet具有相同的背景颜色首选项。到目前为止,这很容易;您只需将portlet的单独实例添加到每个页面并相应地设置首选项。
但是,内容管理员不希望每页管理背景颜色;例如,他们希望将所有“关于”页面上的portlet的背景颜色更改为紫色,这些都是同时进行的(这是有意义的;它会自动化本来可能是手册的[并且根据定义,容易出错] ]过程)。
为了实现这一点,例如,“关于”和“联系”页面都必须使用相同的portlet实例...或者它们必须具有单独的实例,但两个实例都将共享相同的偏好值。或者也许有不同的方法。
有没有办法让这项工作?
答案 0 :(得分:1)
看起来要做的就是创建命名的设置集,让每个页面都有自己的portlet实例。
在OP的示例中,Products页面将具有portlet的唯一实例,该实例将被配置为使用例如“orange”设置集。对portlet设置所做的任何更改都将随后影响使用“orange”设置集的任何其他portlet。
有关详细信息,请参阅http://www.liferay.com/community/forums/-/message_boards/message/10361805#_19_message_10382903。
答案 1 :(得分:0)
您拥有自己的自定义portlet,并且您希望它是可实现的或不可实现的,具体取决于部署它的位置,对吧? (如评论链接中所述)
一种可能性是部署另一个版本的portlet,名称略有不同(portlet1与portlet2),现在又在另一个版本(portlet1)上设置 instanceable ,在另一个版本(portlet2)中设置它非实例。这不是一个好方法,但一些开箱即用的想法。
另外,如果你可以配置instanciable的东西,以便一些portlet窗口启用该设置,另一个关闭,它将是完美的,但我不太了解。也许所有了解谷歌或其他人都可以帮助他/她自己的答案。
顺便说一下。为什么不对另一个问题上的回答者发表评论呢?
<强> Edit_1 强>: 在您发表评论后,我再次研究了该问题并找到了Portlet Prefences属性,其应用程序已在Liferay pages和one forum中进行了描述。我提到的论坛上至少有一条评论接近你所谈论的行为。 Liferay页面也有可能有趣的设置类型的例子。
答案 2 :(得分:0)
是的,这可以通过创建非可实例化的portlet,并为这些页面使用范围来实现。这是关于范围的Liferay维基页面:http://www.liferay.com/community/wiki/-/wiki/Main/Scope
UPD: 还有一些Liferay特定的设置允许您控制portlet首选项的范围:“首选项 - 公司范围”,“首选项 - 每个布局的首选项”和“基于组的首选项”(所有都是通过liferay-portlet.xml设置/取消设置。
更多关于他们的信息: http://content.liferay.com/4.3/doc/devel/liferay_4_portlet_development_guide/multipage/ch02.html 和这里: http://www.liferay.com/community/forums/-/message_boards/message/10931559/maximized