OpenCms/cms:contentload

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda

Se utiliza para cargar una colección de recursos de contenido xml. Dependiendo del recolector pasado en el atributo, puede ser un recurso simple o una lista de recursos los que se carguen, y que serán iterados en este tag.

Atributos[editar]

collector (requerido)

El recolector que leerá el recurso de contenido xml. Deberá estar definido en una clase Java, configurada en opencms-vfs.xml. OpenCms contiene la clase CmsDefaultResourceCollector, que es una agregación de los siguientes recolectores:

  • singleFile: obtiene un recurso simple, cuyo nombre se pasará por parámetro.
  • allInFolder: obtiene todos los recursos de una carpeta, cuyo nombre se pasará por parámetro.
  • allInFolderDateReleasedDesc: obtiene todos los recursos (ordenados por fecha de release) de una carpeta, cuyo nombre se pasará por parámetro.
  • allInFolderNavPos: obtiene todos los recursos (ordenados por el valor de la propiedad NavPos) de una carpeta, cuyo nombre se pasará por parámetro.
  • allInSubTree: obtiene todos los recursos de un sub-árbol, cuyo nombre de raíz se pasará por parámetro.
  • allInSubTreeDateReleasedDesc: obtiene todos los recursos (ordenados por fecha de release) de un sub-árbol, cuyo nombre de raíz se pasará por parámetro.
  • allInSubTreeNavPos: obtiene todos los recursos (ordenados por el valor de la propiedad NavPos) de un sub-árbol, cuyo nombre de raíz se pasará por parámetro.

Hay más recolectores disponibles en la clase CmsPriorityResourceCollector, que ordena los recursos por los valores de las propiedades collector.priority y collector.date:

  • allInFolderPriorityDateDesc: obtiene todos los recursos (ordenados por el valor de la propiedad collector.priority, desempatando con la propiedad collector.date) de una carpeta, cuyo nombre se pasará por parámetro.
  • allInFolderPriorityTitleDesc: obtiene todos los recursos (ordenados por el valor de la propiedad collector.priority, desempatando con la propiedad Title) de una carpeta, cuyo nombre se pasará por parámetro.
  • allInSubTreePriorityDateDesc : obtiene todos los recursos (ordenados por el valor de la propiedad collector.priority, desempatando con la propiedad collector.date) de un sub-árbol, cuyo nombre de raíz se pasará por parámetro.
  • allInSubTreePriorityTitleDesc: obtiene todos los recursos (ordenados por el valor de la propiedad collector.priority, desempatando con la propiedad Title) de un sub-árbol, cuyo nombre de raíz se pasará por parámetro.

En lugar de pasar el nombre del recolector en el atributo, se puede especificar en una expresión macro, indicando que el nombre deberá leerse, por ejemplo, de la propiedad collector de la JSP:

${property.collector}
param
le da información adicional al recolector.

Cuando se utiliza CmsDefaultResourceCollector, el formato es: "[filename]|[resource type]|[count]", donde:

  • [filename] : el nombre del recurso a cargar; puede incluir una macro "${number}", que se reemplaza con el número del siguiente recurso de contenido xml cuando itera sobre los elementos simples.
  • [resource type]: uno de los tipos de contenido xml definidos en opencms-vfs.xml.
  • [count]: usa el uri actual en el OpenCms VFS como el nombre de recurso. Es típico utilizarlo con el singleFile collector.

De nuevo, se pueden utilizar expresiones como:

${property.xml-content}

En este caso, sería reemplazada por el valor de la propiedad xml-content.

${opencms.uri}

En este caso, sería reemplazada por el URI actual del OpenCms VFS.

${opencms.filename}

En este caso, sería reemplazada por el nombre del recurso de contenido xml actual, cuando itera sobre los elementos simples.

${param.resourceType}

En este caso, sería reemplazada por el parámetro de request Http resourceType.

Ejemplo:

param="/linklistdir/linklist_%(number).html|linklist|5"

En este caso:

  • linklistdir es el directorio dentro del sites/default, que contendrá los items.
  • linklist_%(number).html es el formato en el cual se crearán los archivos cuando, mediante el direct edit, se realice una adición de un elemento.
  • linklist es el tipo de elementos.
  • 5 es la cantidad de elementos a mostrar.
editable [true|false (default)]
define si el contenido xml soporta direct edit.
preload [true]
define si el recolector carga en forma previa su contenido. Esto hace falta para comprobar si el recolector ha retornado algún resultado.

Cuerpo[editar]

El código HTML, JSP or JSTL dentro del tag, será iterado con cada elemento.

Ejemplo de uso[editar]

Una vista detallada de un recurso de contenido xml utiliza un tag contentload de la siguiente manera:

<cms:contentload collector="singleFile" param="${opencms.uri}" editable="true">
...
</cms:contentload>

Un ejemplo de cómo leer todo el contenido xml del tipo 11 en un sub-árbol que comienza en /xml-content/ en el sitio actual. Debe setearse la propiedad collector con el valor allInSubTree sobre la JSP, junto con una propiedad xm-content con el valor /xmlcontent/:

<cms:contentload collector="${property.collector}" 
  param="${property.xml-content}article_${number}.html|11" editable="true" preload="true">
...
</cms:contentload>

Un ejemplo para hacer la pre-carga y comprobar si hay resultados:

<cms:contentload collector="${property.collector}"
  param="${property.xml-content}article_${number}.html|11" editable="true">

 <cms:contentinfo var="info" />


 <c:if test="${info.resultSize > 0}">

 <cms:contentload>
 </cms:contentload>
</cms:contentload>