2011-01-27 24 views

Respuesta

8

La API para acceder a las páginas en Liferay es el LayoutService. Sin embargo, los nombres de las páginas no son únicos en Liferay y, además, están internacionalizados. Por lo tanto, necesita una propiedad única para que una página recupere 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).

+0

Los nombres no son únicos, pero la propiedad FriendlyURL es única. – Jonny

+2

FriendlyURL no es único AFAIK. Dos páginas (diseños) en diferentes grupos pueden tener la misma URL amigable. En realidad lo harán, porque cuando creas un nuevo grupo usualmente creas una página con una URL amigable "/ home". El hecho es que la URL amigable de una página (Diseño) no contiene una ruta completa (como "/ web/guest/home", "/ web/user/home") sino solo una parte de ella. – mvmn

+4

La combinación de groupId + friendlyURL es única. –

12

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

Sin embargo, a fin de construir Cadena que contiene el URL de una página que tendrá que concatenar usar el URL de portal, el grupo y el diseño en sí mismo (es decir, /web/guest/home-web es URL portal de páginas públicas, es guest URL amigable del grupo invitado predeterminado y home es amigable URL de la página de inicio/diseño de forma predeterminada). Esto puede ser complicado, ya que debe comprobar si se trata de una página pública o privada, etc.

Y una vez que comience a utilizar hosts virtuales con URL amigables para grupos, las cosas cambian. Entonces esta no es una buena manera.

Para evitar la creación manual de URL y tener URL que se garantiza que son 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 usted. Aunque también necesita proporcionar ThemeDisplay y no solo Layout.

1

Al menos en Liferay 6.1.20 se puede usar 'Vincular URL de portlet a la página' para hacer que los enlaces pasen a otra página en su portal. Está bajo el elemento del menú 'mirar y sentir' de su portlet. Para mí esto funciona bien.

aplausos

Cuestiones relacionadas