如何在 Velocity 模板中获取 Liferay Portlet 实例 ID

How to get Liferay portlet instance id in velocity template

我正在尝试将 link 添加到调用可实例 portlet 中的操作的速度模板。看起来像这样

<a href="/mypage?p_p_id=displayportlet_WAR_myportlets_INSTANCE_ia9r3lKTG3YL&p_p_lifecycle=0&p_p_state=pop_up&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&_displayportlet_WAR_myportlets_INSTANCE_ia9r3lKTG3YL_struts.portlet.action=%2Fview%2FdisplayCart">click here</a>

有没有办法使用 javascript 或某些内置函数使用 portlet 名称 (displayportlet_WAR_myportlets) 获取实例 ID (ia9r3lKTG3YL),或者我真的必须硬编码它?此模板用于同一站点的多个实例,每个站点上的实例 ID 不同。

与其硬编码 portlet ID,不如尝试在 liferay 中使用友好的 URL 映射概念。 使用这个概念,portlet ID 被动态注入,并且 URL 到 portlet 的使用速度要简单得多。

http://www.liferay.com/en_GB/community/wiki/-/wiki/Main/FriendlyURLMapper

希望对您有所帮助。

对于那些仍在寻找答案的人,您可以使用 $themeDisplay 变量在 Velocity 模板中获取您的 portlet 实例 ID:

$themeDisplay.getPortletDisplay().getId();

希望对您有所帮助。