在大多数情况下,有必要了解Liferay portlet的实际名称。
特别是在Liferay的主题中,我可以添加“Login portlet”,如下所示:
$theme.runtime("58", "", $velocityPortletPreferences.toString())
它有效。但是当我尝试添加一些ID为“some-portlet-id”
的自定义portlet时$theme.runtime("some-portlet-id", "", $velocityPortletPreferences.toString())
它不起作用。我怀疑,Liferay portlet的名称不等于portlet的ID。
在这种情况下,有人可以解释一下,这些名字是如何生成的?
提前致谢。
答案 0 :(得分:10)
如果portlet在Liferay门户中,即ROOT
,则该portlet ID等于portlet的名称。
但是如果你试图在其他war文件中获取portlet的名称(例如插件环境),在这种情况下,将根据此规则生成portlet名称:
[portlet ID] + _WAR_ + [webapp name, where portlet is placed]
请注意,portlet ID
和webapp name
都会从名称中排除-
。
因此,如果在WAR文件some-portlet-id
中有一个标识为some-portlet
的portlet,那么portlet名称如下所示:
someportletid_WAR_someportlet
这也是Liferay的主题名称。
另请注意,Liferay portlet的名称还有可选的实例ID:
[portlet ID] + _WAR_ + [webapp name, where portlet is placed] + _INSTANCE_ + [portlet instance ID]
对于那些instansable
为真的portlet,它们是必需的。这基本上是4个任意字母。
someportletid_WAR_someportlet_INSTANCE_abcd
但是请小心他们,因为你可以忽略那些实例ID并放置你想要的一切。但是如果你需要使用一些预先填充的数据(例如portlet首选项)来获取特定实例,那么你肯定需要以某种方式知道它。
答案 1 :(得分:1)
如果您不想保留文档(或n1ckolas'答案)并查找实际的portlet ID(例如Liferay的数字),您也可以手动将所需的portlet添加到页面,然后转到“ “外观和感觉/高级样式”,您可以在那里看到portlet ID。如果有一个实例,添加一些你自己的随机内容使其独一无二,但更重要的部分,完整的portlet id,最容易找到这种方式。