我创建了一个允许在其中插入HTML片段的模块。
这些HTML片段(纯HTML页面)将由CMS的用户在虚拟文件系统/ sites / default /中创建。
我可以从我的模块访问HTML文件并将其插入生成的页面吗?如何吗
当我使用iFrame时,图像或链接一切正常......因为所有这些元素都有 src属性。例如:
<iframe src="/opencms/demo_en/myfile.html"></iframe>
然而,当我使用openCMS标签&lt; cms:include&gt; 或JSP标记&lt; jsp:include&gt; 它不起作用......为什么?
<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 :(得分:0)
好的,当你说:“我可以从我的模块访问”你的意思是/system/modules/foo.bar.qux.my.module / ...不是吗?
在这种情况下,您收到此错误是因为您没有使用正确的路径。
例子就是你的情况:
<cms:include page="/sites/default/demo_en/myfile.html"></cms:include>
这是因为在您的模块中,您位于“/”上下文中,而不是在“/ sites / default /”上下文中,这意味着您需要完全限定VFS中的路径以包含该文件。
此示例以绝对方式指定路径,但您也可以使用相对路径,使用../和./来浏览文件夹,而当您包含带有模块的文件时,您可能希望使用此路径,但除此之外我会推荐绝对路径。