Accediendo a los blogs desde el ADT del Asset Publisher

Usando el "serviceLocator"

Si en lugar de hacer una template del ADT para el portlet de Blogs como vimos en este post (ir al post), quieres hacer una template del ADT para el portlet Asset publisher y mostrar el listado de blogs ahí, debes primero obtener el tipo de dato BlogsEntry a partir de un AssetEntry y de esta forma tendrás acceso a todos los campos del blog.

Aquí está un código resumen de ejemplo:

<#assign BlogsEntryLocalService = serviceLocator.findService("com.liferay.blogs.kernel.service.BlogsEntryLocalService")>

<#list entries as assetEntry>

    <#assign blogEntry = BlogsEntryLocalService.getEntry(assetEntry.getClassPK())>

    <#if blogEntry.getSmallImage()>
        <img src="${blogEntry.getSmallImageURL(themeDisplay)}" alt="${htmlUtil.escape(blogEntry.getTitle())}" />
    </#if>

</#list>

Una vez que tengas la variable blogEntry correctamente cargada, todo lo que vimos en la entrada de blog que he mencionado antes es perfectamente válido.

Antes de liferay 7 para tener acceso a la variable "serviceLocator" había que modificar una serie de propiedades en el portal-ext.properties

freemarker.engine.restricted.classes
freemarker.engine.restricted.packages
freemarker.engine.restricted.variables

Ahora estas propiedades ya no existen y para tener disponible en la template la variable "serviceLocator", tienes que ir a Panel de Control -> Configuration -> System settings -> Foundation -> Freemarker engine y ahí borrar la entrada donde pone "serviceLocator" de las variables restringidas. Es necesario reiniciar para ver los cambios.

Date cuenta que ahora cualquiera que pueda editar templates tiene acceso a todos los servicios de Liferay por lo que ten cuidado si estás en un entorno compartido de administración.