Contenido web Muestra todos los archivos en la biblioteca de documentos
Pregunta
Estoy tratando de usar una pantalla de contenido web para mostrar todos los archivos en una carpeta particular de la biblioteca de documentos.
Me gustaría mantener personalizar la elección de la carpeta.
¿Sabes si existe un elemento dinámico en la plantilla que apunta a una carpeta no a un campo específico en la biblioteca de documentos?
¿Si no es posible, alguien sabe una forma diferente de hacerlo?
gracias de antemano
Sabrina
Solución
Puede crear una estructura que contiene el campo de texto para la carpeta llamada "carpeta".
Que crear plantilla
#set($service = $serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService"))
#set($gid = $getterUtil.getLong($request.get("theme-display").get("scope-group-id")))
#set($fid = $getterUtil.getLong($folderId.getData()))
#set($files = $service.getFileEntries($gid, $fid))
#foreach($doc in $files)
#set($uet = $httpUtil.encodeURL($htmlUtil.unescape($doc.getTitle())))
<a href="/documents/$gid/$fid/$uet">$doc.getTitle()</a><br />
#end
Cree un artículo por esa plantilla/estructura e ingrese la ID de carpeta que desea mostrar. Agregue el portlet de "Pantalla de contenido web" que muestra este artículo.
ACTUALIZAR:
Para el método de Liferay 6.1 se cambió la firma y es
List<DLFileEntry> getFileEntries(long groupId, long folderId, int start, int end, OrderByComparator obc)
Entonces, para Liferay 6.1 debe cambiar la llamada para ser al menos
#set($files = $service.getFileEntries($gid, $fid, -1, -1, null))
o cambiar para inicio/finalización/sort.
Otros consejos
Puede usar el portlet de la biblioteca de documentos para lograr esto.