Pregunta

Quiero crear un enlace en un portlet para poder navegar a una página diferente en el portal de Liferay. Ordeno hacer que estoy buscando una API (puede ser específica de Liferay) que dado un nombre de página, devolvería su URL (también puede ser el FriendlyUrl).

¿Fue útil?

Solución

La API para acceder a las páginas en Liferay es el servicio de diseño. Sin embargo, los nombres de las páginas no son únicos en Liferay y, además, se internacionalizan. Por lo tanto, necesita una propiedad única para una página para recuperar su URL, además de su nombre.

Si realmente solo tiene el nombre de la página, puede usar LayoutLocalServiceUtil.getLayouts (...) para recorrer todos los diseños y verificar alguna propiedad (en este caso su nombre).

Otros consejos

Las páginas del portal en Liferay se llaman de hecho Layouts en API y tablas DB. Están identificados por plid campo, se puede obtener usando LayoutLocalServiceUtil y API relacionadas, y también de otras llamadas como themeDisplay.getLayout().

Sin embargo, para construir una cadena que contenga URL en una página, tendrá que concatenar una URL amigable de portal, grupo y diseño (es decir /web/guest/home - web es URL de portal para páginas públicas, guest es una URL amigable del grupo de invitados por defecto y home es una URL amigable de la página/diseño de inicio de forma predeterminada). Esto puede ser complicado, ya que debe verificar si se trata de una página pública o privada, etc.

Y una vez que comienzas a usar hosts virtuales con URL amigables para grupos, las cosas cambian. Así que esta no es una buena manera.

Para evitar crear manualmente las URL y tener URL que se garanticen que sean correctas, debe usar com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay) un método estático de PortalUtil - Hará todo el trabajo necesario para ti. Aunque también necesitas proporcionar ThemeDisplay Y no solo el diseño.

Al menos en Liferay 6.1.20 se puede usar 'URL de portlet de enlaces a la página' para que los enlaces continúen con la página Antirher en su portal. Está bajo el elemento de menú "Plook and Feel" de su portlet. Para mí esto funciona bien.

salud

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top