5

对于由 Liferay EE 6.0 SP1 提供支持的网站,在某些情况下,某些页面需要“共享”某些 portlet 的相同实例,但其他页面将有自己的实例。

例如(人为的,但希望是说明性的),考虑一个具有更改 portlet 背景颜色的首选项的 portlet。

假设我们有以下页面(该页面上的 portlet 的背景颜色遵循此列表中的页面名称):

主页(绿色)
├─ 关于(蓝色)
│ └─ 联系方式(蓝色)
├─ 产品(橙色)
│ ├─ AXL-900(橙色)
│ └─ VCC-218(橙色)
├─ 支持(红色)
│ └─ VIP(金)
└─ 合法(绿色)

请注意,在几个页面上,portlet 具有相同的背景颜色首选项。到目前为止,这很容易;您只需向每个页面添加一个单独的 portlet 实例并适当地设置首选项。

但是,内容管理员不想按页面管理背景颜色。例如,他们希望同时将所有“关于”页面上的 portlet 的背景颜色更改为紫色(这是有道理的;它使原本需要手动操作的工作自动化 [根据定义,容易出错) ] 过程)。

为此,例如,“关于”和“联系”页面都必须使用相同的 portlet 实例……或者它们必须有单独的实例,但两个实例将共享相同的首选项价值观。或者也许有不同的方法。

有没有办法使这项工作?

4

3 回答 3

1

看起来要走的路是创建命名的设置集,让每个页面都有自己的 portlet 实例。

在来自 OP 的示例中,产品页面将具有 portlet 的唯一实例,该实例将被配置为使用例如“橙色”设置集。对 portlet 设置所做的任何更改随后都会影响使用“橙色”设置集的任何其他 portlet。

有关详细信息,请参阅http://www.liferay.com/community/forums/-/message_boards/message/10361805#_19_message_10382903

于 2011-08-09T20:45:54.577 回答
0

您拥有自己的自定义 portlet,并且希望它是可实例化的或不可实例化的,具体取决于它的部署位置,对吗?(如您评论中的链接所述)

一种可能性是部署另一个名称稍有不同的 portlet 版本(portlet1 与 portlet2),现在在另一个(portlet1)上设置instanceable,在另一个(portlet2)上设置为non-instanceable。这不是一个好方法,而是一些开箱即用的想法。

此外,如果您可以以其他方式配置可实例化的东西,以便某个 portlet 窗口打开该设置并关闭另一个,那将是完美的,但我对此知之甚少。也许所有人都知道谷歌或其他人可以帮助他/她自己的答案。

顺便提一句。为什么不在评论上问另一个问题的回答者也看这个?

Edit_1:在您发表评论后,我再次研究了该问题并发现了Portlet Prefences属性,该属性的应用程序在Liferay 页面一个论坛上进行了描述。我提到的论坛上至少有一条评论与您所说的行为很接近。Liferay 页面也有可能有趣的设置类型的示例。

于 2011-08-07T19:58:51.120 回答
0

是的,这可以通过创建不可实例化的 portlet 并为这些页面使用范围来实现。这是关于范围的 Liferay wiki 页面:http ://www.liferay.com/community/wiki/-/wiki/Main/Scope

UPD:还有一些 Liferay 特定的设置允许您控制 portlet 首选项的范围:“preferences-company-wide”、“preferences-unique-per-layout”和“preferences-owned-by-group”(所有都通过 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/最大化

于 2011-09-09T15:22:53.330 回答