2013-11-14 2 views
4

Я хочу получить дружественный URL-адрес для макета, основанного на идентификаторе макета. Например,/web/group/page. В настоящее время это, как я это делаю:Get Layout Friendly URL In Liferay

Layout layout = LayoutLocalServiceUtil.getLayout(groupId, false, layoutId); 

String groupFriendlyUrl = GroupLocalServiceUtil.getGroup(groupId).getFriendlyURL(); //will output /group 
String layoutFriendlyUrl = layout.getFriendlyURL(); //will output /page 
String webFriendlyUrl = String.format("/web%s%s", groupFriendlyUrl, layoutFriendlyUrl); //will output /web/group/page 

мне интересно, если есть лучший способ сделать это, где я могу полный путь,/веб/группы/страницы с одним методом.

+2

'themeDisplay.getScopeGroup(). GetPathFriendlyURL (layout.isPrivateLayout(), themeDisplay) + themeDisplay.getScopeGroup(). GetFriendlyURL() + layout.getFriendlyURL();' как насчет этого кода? –

+0

Я надеялся, что есть класс Util. Но это тоже хорошо. Благодаря! –

+0

Я вижу вашу точку зрения, ожидая, что функция Util сделает это. К сожалению, вам придется обернуть этот код самостоятельно в пользовательскую функцию, если вам нужно часто это вызывать. Лично я создал проект утилиты и использовал экспортированный .jar во всех моих портлетах – yannicuLar

ответ

4

Если у вас есть plid (макет страницы Id), используйте getLayoutFriendlyURL(), как показано ниже:

Layout selectedLayout = LayoutLocalServiceUtil.getLayout(plid); 
String url = PortalUtil.getLayoutFriendlyURL(selectedLayout, themeDisplay); 
0
  1. ThemeDisplay theme = (ThemeDisplay) getPortletRequest().getAttribute(WebKeys.THEME_DISPLAY);

  2. final long GROUP_ID = theme.getLayout().getGroupId(); Layout destinationLayout = LayoutLocalServiceUtil.getFriendlyURLLayout(GROUP_ID, false, friendlyUrl);

  3. Layout layout = LayoutLocalServiceUtil.getLayout(destinationLayout.getPlid()); String completeUrl = PortalUtil.getLayoutFullURL(layout, getThemeDisplay());