5

在大多数情况下,有必要知道 Liferay portlet 的实际名称。

特别是在 Liferay 的主题中,我可以添加“登录 portlet”,如下所示:

$theme.runtime("58", "", $velocityPortletPreferences.toString())

它有效。但是当我尝试添加一些 ID 为“some-portlet-id”的自定义 portlet

$theme.runtime("some-portlet-id", "", $velocityPortletPreferences.toString())

它不起作用。我怀疑 Liferay portlet 的名称不等于 portlet 的 ID。

在这种情况下,有人可以解释一下,这些名称是如何生成的?

提前致谢。

4

2 回答 2

10

如果 portlet 在 Liferay 门户中,则 portlet ID 等于 portlet 的名称,即ROOT.

但是,如果您尝试在其他 war 文件(例如插件环境)中获取 portlet 的名称,在这种情况下,portlet 名称将根据以下规则生成:

[portlet ID] + _WAR_ + [webapp name, where portlet is placed]

请注意,这两者portlet ID和从他们的名字中webapp name排除。-

因此,如果您some-portlet-id在 WAR-file中有带有 idsome-portlet的 portlet,那么 portlet 名称类似于以下内容:

someportletid_WAR_someportlet

这也指 Liferay 的主题名称。

另外请记住,Liferay portlet 的名称也有可选的实例 ID:

[portlet ID] + _WAR_ + [webapp name, where portlet is placed] + _INSTANCE_ + [portlet instance ID]

它们对于那些 portlet 是必需的,这instansable是真的。这基本上是4个任意字母。

someportletid_WAR_someportlet_INSTANCE_abcd

但请小心他们,因为您可以忽略该实例 ID 并放置您想要的所有内容。但是,如果您需要使用一些预先填充的数据(例如 portlet 首选项)来获取特定实例,那么您肯定需要以某种方式知道这一点。

于 2013-03-09T13:15:18.187 回答
1

如果您不想保留文档(或 n1ckolas 的答案)并查找实际的 portlet id(例如 Liferay 的编号),您也可以手动将所需的 portlet 添加到页面,然后转到“Look&Feel/Advanced样式”,您可以在那里看到 portlet id。如果有一个实例,添加一些您自己的随机内容以使其唯一,但更重要的部分,完整的 portlet id,最容易通过这种方式找到。

于 2013-03-09T19:11:59.787 回答