Tag cms:formatter

12/03/2013       Sergio Raposo Vargas       OpenCms 8, OpenCms 9

El tag cms:formatter es el que nos permite definir un formateador de un contenido XML en el cual podremos definir el HMTL que se genera a partir de dicho contenido.

El tag cms:formatter tiene 3 atributos:

  • var: Nombre de la variable donde se cargará el valor del contenido XML
  • val: Nombre de la variable donde se guardará el valor de los campos del contenido XML para poder acceder de una forma rápida a los valores.
  • rdfa: Nombre de la variable que se usará para marcar los contenidos que se pueden editar usando el editor inline (Nuevo editor Acacia Inline)

Podremos por tanto definir un formateador de la siguiente forma:

<cms:formatter var="content" val="value" rdfa="rdfa">
…
</cms:formatter>

Dentro de este tag podremos acceder al contenido de la siguiente forma:

  • Campos simple: ${content.value.Title} o ${value.Title}
  • Campos nested: ${value.Paragraph.value.Title}
  • Campos multiples: <c:forEach var=“link” items=“${value.Links}”>${link}</c:forEach>
  • Comprobar si existe un campo: <c:if test="${paragraph.value.Image.exists}">…</c:if>
  • Comprobar si un campo tiene valor: <c:if test="${paragraph.value.Headline.isSet}">…</c:if>

Mediante EL (Expression Language) podremos acceder a una serie de variables predefinidas en el contexto:

${cms. …}

  • cms.vfs - CmsJspVfsAccessBean
  • cms.requestContext - CmsRequestContext
  • cms.element - CmsContainerElementBean
  • cms.container - CmsContainerBean
  • cms.page - CmsContainerPageBean


Algunos de los usos más importantes de estas variables son:

  • Acceder a los parámetros del setting: ${cms.element.settings.boxschema}
  • Acceder al ancho del contenedor actual: ${cms.container.width}
  • Acceder al usuario actual: ${cms.RequestContext.currentUser().Name}
  • Acceder a la uri actual: ${cms.RequestContext.Uri}
  • Leer una propiedad de un recurso: ${cms.readPropertyObject($uri, "Title", false).Value}
 OpenCms 8.5, Tags, Formatter