Magnolia cms:资源模块正确使用

时间:2014-02-16 08:09:20

标签: java content-management-system magnolia

我正在学习玉兰花。我正在尝试使用资源模块。我实际上有两个问题。

  1. 无法上传一堆文件。我有一些文件,但在一段时间内我将不得不上传更多文件。模块导入功能要我上传一个xml文件。但我不知道如何正确生成它。试图通过JCR导入,但之后我无法在资源应用程序中看到这些文件。试图配置模块来搜索文件系统中的文件:我将fileSystemLoader设置为类info.magnolia.module.resources.loaders.FileSystemResourceLoader并设置一些路径。它也不适合我。也许我只是不明白应该在什么时候激活文件上传功能。在应用程序启动时,它不起作用。

  2. 如何在我的模板中正确使用这些资源?我应该使用什么ftl标签?

  3. 我不使用STK模块。

    如果您决定帮助我,请感谢您的耐心等待。

    Magnolia版本:5.2 CE

    JDK冰茶:1.7.0_51

    操作系统:Linux / OpenSUSE 12.3

1 个答案:

答案 0 :(得分:2)

我之前使用(在4.5.x上)脚本通过groovy模块执行任务。它也适用于5.2。

import static groovy.io.FileType.FILES
import info.magnolia.jcr.util.NodeUtil
import org.apache.commons.lang.StringUtils
import info.magnolia.cms.util.ContentUtil

class Globals {
 static def folderName = '//some/folder/in/filesystem/on/server'
}

def loadImageFolder() {
 session = ctx.getJCRSession("resources")
 parentFolder = session.getNode("/templating-kit/jelinek-image/obrazky-produkty")

 new File(Globals.folderName).eachFileRecurse(FILES) {

  name = it.name
  // set file name
  extension = StringUtils.substringAfterLast(name, '.')
  name = StringUtils.substringBeforeLast(name, '.')

  // persist
  resource = NodeUtil.createPath(parentFolder,name , "mgnl:content")
  // persistResource
  resource.setProperty("mgnl:template", "resources:binary")
  resource.setProperty("extension", extension)

  binary = resource.addNode("binary", "mgnl:resource")
  binary.setProperty("jcr:data", new FileInputStream(it.absolutePath))
  binary.setProperty("extension", extension)
  binary.setProperty("fileName", name)
  binary.setProperty("jcr:mimeType", "image/"+extension)
  binary.setProperty("size", it.length())

 }
 session.save()
}

loadImageFolder() 
return 'done'