Get it on Google Play
Mas de 21 años en el mundo del IT corporativo

Encontrar la URL donde se ha publicado un contenido con el visor de contenido web

02-01-2019
Liferay Encontrar Url

Liferay Encontrar Url

Con el objetivo de automatizar o crear aplicaciones ‘molonas’ a veces nos encontramos con el reto de saber donde se ha publicado un contenido utilizando el visor de contenido web. La siguiente función no hace este trabajo, dado un artículo de contenido web(JournalArticle) nos devuelve la URL de donde esta publicado o ‘null’ en caso de que no esté publicado:

private String getArticlePageURL( JournalArticle ja, ThemeDisplay themeDisplay ) {
	DynamicQuery query = DynamicQueryFactoryUtil.forClass(PortletPreferences.class)
		    .add( PropertyFactoryUtil.forName("portletId").like( "com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_%" ) )
		    .add( PropertyFactoryUtil.forName("preferences").like( "%<name>groupId</name><value>"+ja.getGroupId()+"</value>%" ) )
		    .add( PropertyFactoryUtil.forName("preferences").like( "%<name>articleId</name><value>"+ja.getArticleId()+"</value>%" ) );
		
	List<PortletPreferences> portlets = PortletPreferencesLocalServiceUtil.dynamicQuery( query );
		
	if ( portlets.size()>0 ) {
		try {
			Layout layout=LayoutLocalServiceUtil.getLayout( portlets.get(0).getPlid() );
				
			return PortalUtil.getLayoutFriendlyURL(layout, themeDisplay);
		} catch (Exception ex) { ex.printStackTrace(); }
		}
		
	return null;
	}

Fijaros que, básicamente, lo que hace es hacer una búsqueda en la base de datos para encontrar el portlet configurado para mostrar ese contenido y en caso de encontrarlo devuelve la URL de la página donde está publicado.

Este código es una navaja suiza, es decir, lo podéis modificar para hacer cantidad de cosas: Encontrar la configuración de un portlet, saber cuantas veces se ha instanciado un portlet, encontrar la página donde esta un portlet y mil cosas mas… (Vuestra imaginación es el límite)

Espero que esto os ayude a crear portales con una experiencia de usuario impecable 😀 .

Si te ha servido, por favor comparte

Interesado en formación Liferay?

 

Leave a Reply