2012-02-29 69 views
0

我已经创建了一个允许在其中插入HTML片段的模块。OpenCMS:如何从模块访问VFS /网站/默认/ HTML文件

这些HTML片段(纯HTML页面)将由CMS的用户在虚拟文件system/sites/default /中创建。

我可以从我的模块访问HTML文件并将其插入生成的页面吗?怎么样?

当我使用iFrame时,图像或链接一切正常......因为所有这些元素都有src属性。例如:

<iframe src="/opencms/demo_en/myfile.html"></iframe> 

然而,当我使用OpenCms的标签< CMS:包括>或JSP标签<的jsp:include>的这是行不通的,为什么?

<cms:include page="/opencms/demo_en/myfile.html"></cms:include> 

抛出:

org.opencms.file.CmsVfsResourceNotFoundException: Unable to read resource "/opencms/demo_en/myfile.html" 

难道是一个权限问题?

所以..我应该用iFrame做这个吗?有没有更好的方式来访问和嵌入这个HTML资源?

在此先感谢!

回答

0

好的,当你说:“我可以从我的模块访问”你的意思是从你的/system/modules/foo.bar.qux.my.module/...不是吗?

在这种情况下,您会遇到此错误,因为您没有使用正确的路径。

的例子是在您的情况:

<cms:include page="/sites/default/demo_en/myfile.html"></cms:include> 

那是因为你的模块里面您位于下的“/”上下文,而不是在“/网站/默认/”背景下,这意味着您需要完全限定VFS中的路径以包含该文件。

本示例以绝对方式指定路径,但您也可以使用相对路径,使用../和./来导航文件夹,而包含使用模块的文件时,您可能会喜欢使用此路径一个,但否则我会建议绝对路径。