2016-09-09 1 views
0

Existe-t-il un moyen de créer/traiter des URL conviviales dans liferay comme ceci?Liferay Niveau supérieur URL amicale

http://myserver.com/JonDoe 

... où John Doe est le nom d'un client dont les données doivent être affichées.

Un peu plus en détail:

Je ne parle pas de se débarrasser de la « web » ou « groupe » pour urls amis, je prends d'avoir une URL amicale juste après le premier «/» .

Nous voulons créer des URL sous la forme http://server/ClientName où ClientName résout le nom d'un client. C'est un problème car normalement liferay s'attendrait à une URL amicale après le premier "/". Nous avons donc décidé d'intercepter cela d'une manière ou d'une autre.

Le processus devrait être comme ceci (pseudo code):

1) inspectent les valeurs après le premier "/"

2) Si la valeur après "/" est le nom d'un client, envoyer de l'utilisateur à la page d'affichage du client et aux informations sur le client d'affichage

3) S'il n'y a pas de client avec le prénom, interprétez-le comme une adresse URL conviviale et faites un comportement de vie normal.

Existe-t-il un moyen de le faire en liferay?

+0

Pourriez-vous nous dire plus de détails? Avez-vous besoin d'une URL conviviale pour une page spécifique - c'est possible, comme l'explique déjà Olaf? Ou voulez-vous avoir une URL conviviale pour un contenu spécifique sur une page. Dans ce cas, il est seulement possible d'avoir quelque chose comme 'http: //myserver.com/page/ -/myPortlet/JonDoe' - ou vous corrigez Liferay pour qu'il corresponde à votre cas d'utilisation, ce qui est également possible. –

+0

Salut Tobias, le client veut entrer une URL au format http // server/ClientName qui devrait prendre toutes les données du client et les afficher. C'est un problème car liferay va essayer de résoudre un site nommé "ClientName". J'ai donc besoin d'ajouter une logique qui essaie d'interroger un client avec Clientname et s'il trouve ce client, il va transporter l'utilisateur vers une page d'affichage client. S'il ne trouve pas le client, il interprétera la chaîne comme une URL conviviale et y redirigera l'utilisateur (comportement de liferay standard). – Breiti

Répondre

1

Vous semblez vouloir supprimer les parties/web/ou/group/des URL? Ceci est possible avec une configuration correcte de l'hôte virtuel - vous mapperez le site au nom de domaine, alors vous avez toute liberté pour nommer les pages, même hiérarchiquement (par exemple/JonDoe/home)

Jusqu'à présent, c'était simple configuration. Si vous voulez/JonDoe pointer vers un autre site que/JoeShmoe (par exemple juste se débarrasser de/web/ou/group /), vous devrez creuser plus profondément et écrire quelques plugins de personnalisation qui changent la résolution du nom (et la génération d'URL)

+0

Salut Olaf, Je pense que la demande des clients est assez coûteuse, car il faudrait différencier entre les pages réelles/ma page et les noms de sociétés/entreprise. Je vais y réfléchir un peu plus ... – Breiti

1

Si vous voulez avoir une URL d'une page, vous pouvez simplement définir l'URL conviviale pour cette page (voir remarque Olafs sur les hôtes virtuels aussi bien)

Si vous voulez avoir un limité ensemble d'URL pour une page, vous pouvez créer une page de type Lien vers la page pour chaque URL et sélectionnez la page d'origine. Pour identifier l'URL actuelle lorsque vous rendu portlet vous pouvez utiliser PortalUtil.getCurrentURL(renderRequest)

Si vous voulez avoir beaucoup URL pour une page que vous pouvez utiliser un FriendlyUrlMapper, ce qui permet des URL comme http://myserver.com/page/-/myPortlet/JonDoe.

Si vous voulez avoir beaucoup d'URL « root » (je veux dire sans la partie /page/-/myPortlet), vous devrez créer un plugin Liferay EXT, étendre com.liferay.portal.util.PortalImpl et écraser getPortletFriendlyURLMapperLayoutQueryStringComposite. J'ai fait la même chose en mettant en œuvre une stratégie qui vérifie si une page existe pour une URL donnée spécifique et utilise autrement l'URL en tant que paramètre pour un FriendlyURLMapper.