2016-09-09 4 views
0

Есть ли способ создания/обработки дружественных URL-адресов в liferay?Liferay Top Level Friendly URL

http://myserver.com/JonDoe 

... где John Doe - это имя клиентов, данные которых должны отображаться.

Чуть более подробно:

Я не говорю о том, чтобы избавиться от «паутины» или «группы» для дружественных URL, я принимаю о том, дружественную URL сразу после первого «/» ,

Мы хотим создать URL-адреса в форме http://server/ClientName, где ClientName разрешает имя Клиента. Это проблема, поскольку обычно пожизненный человек ожидает дружественный URL-адрес после первого «/». Таким образом, мы как-то перехватили это.

Этот процесс должен быть, как этот (псевдо-код):

1) проверить значения после первого "/"

2) Если значение после того, как "/" это имя клиента, отправить пользовательская страница клиента и отображаемая информация клиента

3) Если клиент с указанным именем отсутствует, интерпретируйте его как дружественный URL-адрес и выполняйте обычное поведение в течение жизни.

Есть ли способ сделать это в liferay?

+0

Не могли бы вы добавить дополнительные сведения? Вам нужен дружественный URL-адрес для определенной страницы - это возможно, как объясняет Олаф? Или вы хотите иметь дружественный URL-адрес для определенного контента на странице. В этом случае возможно только что-то вроде 'http: //myserver.com/page/-/myPortlet/JonDoe' - или вы устанавливаете Liferay в соответствии с вашим вариантом использования, что также возможно. –

+0

Привет Тобиас, клиент хочет ввести URL-адрес в формате http // server/ClientName, который должен взять все данные клиента и отобразить его. Это проблема, так как liferay попытается разрешить сайт с именем «ClientName». Поэтому мне нужно добавить логику, которая пытается запросить клиента с помощью Clientname, и если он найдет этого клиента, он перенесет пользователя на страницу отображения клиента. Если он не найдет клиента, он будет интерпретировать строку в качестве дружественного URL-адреса и перенаправлять туда пользователя (стандартное поведение для пожизненного лидера). – Breiti

ответ

1

Похоже, вы хотите избавиться от/web/или/группы/частей URL-адресов? Это возможно при правильной настройке виртуального хоста - вы привяжете сайт к доменному имени, тогда у вас будет полная свобода названия страниц, даже иерархически (например,/JonDoe/home)

До сих пор это было просто конфигурации. Если вы хотите/JonDoe указать на еще один сайт чем/JoeShmoe (например, просто избавиться от/web/или/group /), вам придется копать глубже и написать довольно некоторые плагины настройки, которые меняют разрешение имен (и генерация URL-адреса)

+0

Привет, Олаф. Я думаю, что запрос клиентов довольно дорогостоящий, потому что для этого потребуется разграничение между фактическими страницами/моей страницей и названиями компаний/фирменного наименования. Я подумаю об этом еще немного ... – Breiti

1

Если вы хотите иметь один URL для страницы, вы можете просто установить дружественный URL для этой страницы (см Olafs замечания о виртуальных хостах, а)

Если вы хотите иметь ограниченный набор URL-адресов для одной страницы, вы можете создать страницу типа Ссылка на страницу для каждого URL-адреса и выберите исходную страницу. Для того, чтобы определить текущий URL при визуализации вы портлета вы можете использовать PortalUtil.getCurrentURL(renderRequest)

Если вы хотите иметь много URL-адресов для одной страницы вы можете использовать FriendlyUrlMapper, что позволяет URL, как http://myserver.com/page/-/myPortlet/JonDoe.

Если вы хотите иметь много «корневого» URL (я имею в виду без /page/-/myPortlet части), вам придется создать плагин Liferay EXT, расширить com.liferay.portal.util.PortalImpl и перезаписать getPortletFriendlyURLMapperLayoutQueryStringComposite. Я сделал то же самое, реализовав стратегию, которая проверяет, существует ли страница для определенного заданного URL-адреса и в противном случае использует URL-адрес в качестве параметра для параметра FriendlyURLMapper.