RE: Lectura de campo personalizado de tipo fecha en un ADT

Angela Duarte Lesmes, modified 5 Years ago. New Member Posts: 16 Join Date: 3/5/20 Recent Posts
Buenas tardes


He creado un campo personalizado de tipo fecha aplicado a los "artículos de contenido WEB". Dentro de mi ADT quiero hacer un filtro para que aquellos "Artículos" cuya fecha en campo personalizado sea menor a la fecha actual no sean mostrados, pero tengo problemas para realizar la lectura del campo personalizado, mi código es el siguiente:
<#if entries?has_content>
    <#list entries as curEntry>
        <#assign fecha_art = curEntry.getExpandoBridge().getAttribute("fecha_vencimiento")>
    </#list>
</#if>


En donde "fecha_vencimiento" es la clave de mi campo personalizado, la lógica que viene después  de la lectura del campo ya la tengo funcional (es decir obtener la fecha actual, compararla con la variable "fecha_art" , y la posterior presentación del contenido).

Me gustaría poder aplicar la misma lógica a los buscadores, es decir; si la fecha del campo personalizado es menor a la fecha actual, el "activo" NO se muestre.

Agradezco su ayuda, y me gustaría añadir que este foro representa un excelente recurso para los desarrolladores liferay.
Angela Duarte Lesmes, modified 5 Years ago. New Member Posts: 16 Join Date: 3/5/20 Recent Posts
Buenas tardes, nadie ha hecho algo similar?  emoticon
thumbnail
Sergio Sánchez, modified 5 Years ago. Regular Member Posts: 149 Join Date: 7/6/11 Recent Posts
Hola Ángela, sin entrar a comprender lo que quieres construir y sólo atendiendo como obtener una fecha en una plantilla, ten en cuenta que en el contexto de Freemarker tienes disponible el objeto dateUtil dentro de una plantilla Freemarker. El método getDate de ese objeto necesita 3 argumentos: el objeto con la fecha, el formato a aplicar y el locale.

Puedes buscar en el repositorio de GitHub de Liferay ejemplos diversos, que para eso Liferay Portal es de código abierto.

Aquí un ejemplo.
Y otro de como se pinta en un Asset Publisher

Espero te sirva.
Angela Duarte Lesmes, modified 5 Years ago. New Member Posts: 16 Join Date: 3/5/20 Recent Posts
Buenas tardes, gracias por la respuesta, sin embargo mi duda esta más orientada a la lectura de un campo personalizado en todos los artículos que indexa un Asset Publisher, es decir si el Assset Publisher encontró 10 artículos leer el campo personalizado de cada uno de esos artículos durante cada iteración 

<#if entries?has_content>
    <#list entries as curEntry>
            "valor del campo personalizado de cada artículo que el asset publisher va encontrando"
    </#list>
</#if>


muchas gracias
thumbnail
Sergio Sánchez, modified 5 Years ago. Regular Member Posts: 149 Join Date: 7/6/11 Recent Posts
Hola Ángela, dentro de una plantilla Freemarker tienes varias variables que te dan acceso a los servicios de Expando/Custom Fields:
- expandoColumnLocalServicecom.liferay.expando.kernel.service.ExpandoColumnLocalService
- expandoRowLocalServicecom.liferay.expando.kernel.service.ExpandoRowLocalService
- expandoTableLocalServicecom.liferay.expando.kernel.service.ExpandoTableLocalService
- expandoValueLocalServicecom.liferay.expando.kernel.service.ExpandoValueLocalService

El método que necesitas para recuperar un valor es getValue de expandoValueLocalService