Instanciar portlet en una plantilla de visualización de Liferay

Actualmente estoy trabajando en el desarrollo de un nuevo portal para una gran empresa de telecomunicaciones y uno de los requisitos en el diseño de la visualización de uno de los tipos de contenido web del portal es que un portlet que hemos desarrollado tiene que visualizarse dentro del propio contenido web como si formase parte del mismo, y no sirve colocarlo a su al rededor en la plantilla de visualización de la página como se haría normalmente.

Al principio pensé que insertar un portlet manualmente iba a ser muy complicado y que me tocaría hacer alguna “chapuzilla” para simular el comportamiento requerido, pero buscando por internet encontré un artículo en el blog de Liferay que aborda este tema. En el artículo el autor explica como insertar un portlet desde el editor HTML del contenido web. En mi caso lo he insertado en la plantilla de visualización de la estructura del contenido web porque necesito que el portlet aparezca siempre.

Para insertar un portlet de forma manual solo es necesario el tag HTML <runtime-portlet> como se muestra en el siguiente ejemplo. El DIV es opcional aunque es recomendable si queremos aplicar algún estilo al portlet o simplemente como división de página para una mejor estructuración del código HTML.

<div id="embedded-welcome-portlet">
   <runtime-portlet name="47" instance="4433" queryString=""/>
</div>

En este ejemplo el autor del artículo está instanciando dentro de un contenido web el portlet de Liferay Hello World cuyo identificador es el 47 (lista de IDs de portlets). El atributo instance es opcional y solo se utiliza cuando el portlet que vayamos a instanciar permita instancias múltiples en la misma página. En ese caso tendremos que utilizar un número o código de instancia diferente para cada uno de ellos para que Liferay pueda tratarlos como portlets independientes.

En el siguiente ejemplo muestro como instancio yo mi propio portlet. El identificador lo podemos obtener en las opciones del propio portlet, en la opción Apariencia -> Estilos avanzados. En este caso no utilizo el atributo instance porque el portlet no permite instancias múltiples en la misma página.

<div id="embedded-articlenextevents-portlet">
    <runtime-portlet name="articlenextevents_WAR_articlenexteventsportlet" queryString=""/>
</div>

Con estos simples pasos podremos instanciar cualquier portlet en el tema de nuestro portal, dentro de un contenido web o en la plantilla de visualización de una estructura como es mi caso.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *