Fórum

Update friendly URL moving a page

Paolo Giannone, modificado 7 Anos atrás.

Update friendly URL moving a page

New Member Postagens: 21 Data de Entrada: 15/02/17 Postagens Recentes
Good evening.

my target is to update the friendly url of a page when I move it. For instance I move the page 'my hook' to Assets. When I save I want to change the friendly url of my page from /myhook to assets/myhook.
Here is a picture:



To reach my target I try using hooks:

public class LayoutFriendlyUrlListener extends BaseModelListener<layoutfriendlyurl> {
@Override
	public void onAfterUpdate(LayoutFriendlyURL newLayoutFriendlyUrl)
			throws ModelListenerException {

		try{
			
			log.debug("LISTENER onAfterUpdate Layout -&gt; update friendyurl");
			Layout newLayout = LayoutLocalServiceUtil.fetchLayout(newLayoutFriendlyUrl.getPlid());
			String oldFriendlyUrl = newLayout.getFriendlyURL();
			String newFriendlyUrl = oldFriendlyUrl.substring(oldFriendlyUrl.lastIndexOf("/"));
			

			if(newLayout.getParentPlid() &gt; 0){
				Layout parentLayout = LayoutLocalServiceUtil.fetchLayout(newLayout.getParentPlid());
				newFriendlyUrl = parentLayout.getFriendlyURL() + newLayout.getFriendlyURL();
			}

			newLayout.setFriendlyURL(newFriendlyUrl);
			LayoutLocalServiceUtil.updateLayout(newLayout);
			newLayoutFriendlyUrl.setFriendlyURL(newFriendlyUrl);
			LayoutFriendlyURLLocalServiceUtil.updateLayoutFriendlyURL(newLayoutFriendlyUrl);
			

		}catch(Exception ex) {
			log.error("Error........... ", ex);
		}	
	}
</layoutfriendlyurl>


The problem with this hook is that it produces a loop because for each update it calls the onAfterUpdate method.
How can I solve?

Thank you.
thumbnail
Sandeep Nair, modificado 7 Anos atrás.

RE: Update friendly URL moving a page

Liferay Legend Postagens: 1744 Data de Entrada: 06/11/08 Postagens Recentes
Hi,

Try overriding the service updateLayoutFriendlyURL using Service Wrapper instead of ModelListener.

Regards,
Sandeep