0

我创建了一个允许在其中插入 HTML 片段的模块。

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

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

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

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

但是,当我使用 openCMS 标签< cms:include >或 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 资源?

提前致谢!

4

1 回答 1

0

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

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

该示例将在您的情况下:

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

这是因为在您的模块内部,您位于“/”上下文下,而不是“/sites/default/”上下文下,这意味着您需要完全限定 VFS 中的路径以包含该文件。

此示例以绝对方式指定路径,但您也可以使用相对路径,使用 ../ 和 ./ 在文件夹中导航,同时将文件包含在您的模块中,您可能希望使用这个,但除此之外我会推荐绝对路径。

于 2012-03-14T17:02:10.870 回答