Programmatisch die URL einer Seite in Liferay erhalten
Frage
Ich möchte einen Link in einem Portlet erstellen, damit ich zu einer anderen Seite im Liferay -Portal navigieren kann. Ich befreie, dass ich nach einer API suche (kann Liferay -spezifisch sein), die einen Seitennamen bei der URL zurückgeben (es kann auch die Friendlyurl sein).
Lösung
Die API zum Zugriff auf Seiten in Liferay ist der Layoutservice. Seitennamen sind jedoch in Liferay nicht eindeutig und werden außerdem internationalisiert. Sie benötigen also eine einzigartige Eigenschaft für eine Seite, um ihre URL neben ihrem Namen abzurufen.
Wenn Sie wirklich nur den Seitennamen haben, können Sie LayoutLocalServiceutil.getLayouts (...) verwenden, um alle Layouts zu überschreiten und nach einer Eigenschaft (in diesem Fall seinen Namen) zu überprüfen.
Andere Tipps
Portalseiten in Liferay werden in der Tat genannt Layouts
In API- und DB -Tabellen. Sie sind identifiziert von plid
Feld, kann mit Verwendung erhalten werden LayoutLocalServiceUtil
und verwandte APIs und auch von einigen anderen Anrufen wie themeDisplay.getLayout()
.
Um jedoch eine Saite mit URL zu einer Seite zu erstellen /web/guest/home
- web
ist Portal -URL für öffentliche Seiten, guest
ist standardmäßig eine freundschaftliche URL der Gästebruppe und home
ist eine freundliche URL von Homepage/Layout standardmäßig). Dies kann schwierig sein, da Sie überprüfen müssen, ob es sich um eine öffentliche oder eine private Seite usw. handelt.
Und sobald Sie anfangen, virtuelle Hosts mit freundlichen URLs für Gruppen zu verwenden, ändern sich die Dinge. Das ist also kein guter Weg.
Um manuelles Erstellen von URLs zu vermeiden und URLs zu haben, die garantiert korrekt sind, sollten Sie verwenden com.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
eine statische Methode von PortalUtil
- Es wird alle notwendigen Arbeiten für Sie erledigen. Sie müssen jedoch auch bereitstellen ThemeDisplay
und nicht nur Layout.
Zumindest in Liferay 6.1.20 kann man "Link -Portlet -URLs zu Seite" verwenden, um Links auf die Antoher -Seite in Ihrem Portal fortzusetzen. Es befindet sich unter dem Menüpunkt Ihres Portlets. Für mich funktioniert das gut.
Prost