0

我有一个 html 片段,它包含在模板化 EPiServer 页面的属性中,在该 html 中有一个img标签,其中有一个相对 url。

查看页面时,我可以看到标记的 src 属性已更改为具有 prefix /ProjectName/Templates/Pages/

我知道这样做是为了正确定位HtmlRewriteToExternal与 aspx 模板(确实存在于其中Templates\Pages)一起存储的图像文件,但是在我的情况下,旨在成为 html 片段一部分的图像实际上存储在PageFiles/nnn/(其中 nnn 实际上是父页面的PageFolderID),我需要以某种方式使更改后的 html 反映这一点。

我创建了一个继承FriendlyUrlRewriteProvider并注册了我的类的类。我可以调试应用程序,并观察请求通过被覆盖的方法,但我仍然看不到前缀被添加到哪里,也不知道如何更改它。我可以在我的类中将 src 标记更改为不同的相对路径,但仍在添加前缀。

我已经阅读了我在 EPiServer url 重写中可以找到的所有内容,但找不到任何暗示该前缀被添加到何处或如何停止或更改它的任何内容。

我读过的东西:


对于我实际想要实现的目标,我愿意接受完全不同的解决方案,如下所示:

我有多个独立的静态 html 文件集和相关的图像/css/js 文件,我正在尝试使用 EPiServer 存储/发布它们。每组的结构看起来像

  • 设置文件夹/
    • htmlfileA.html
    • htmlfileB.html
    • css/
      • 样式.css
    • 图片/
      • piccy1.png
      • piccy2.png
    • js/
      • 魔术.js

我想我应该为集合创建一个 EPiServer 页面,然后为每个 html 文件创建子页面,将文件中的 html 存储在子页面的属性中。目前我将相关的静态文件存储在相关 setfolder 页面的 PageFiles 中,因为这似乎是放置它们的逻辑上最一致的位置。

4

2 回答 2

1

如果您将图像存储在作为虚拟路径提供程序的 PageFiles 中,您应该能够简单地使用 API 获取文件的 url。在 PageData 类(即模板中的 CurrentPage)上,您有一个名为 GetPageDirectory() 的方法,它获取页面文件夹。

您可以在此处阅读有关 VPP 概念的更多信息:

http://sdk.episerver.com/library/cms6.1/Developers%20Guide/Core%20Features/File%20System/File%20System%20and%20VPPs.htm

我认为不需要 url 重写提供程序。

于 2012-03-29T19:06:47.837 回答
1

如果没有看到它在你面前,很难给出最好的解决方案。但一种简单的方法是在将属性打印到页面时更改 HTML 代码。

像 <%= ChangeRelativeLinks(CurrentPage["HtmlCode"] as string) %>

在 ChangeRelativeLinks(string htmlCode) 中,您执行一个正则表达式或类似的操作,将相对链接和图像更改为 pagedir 作为绝对路径。

于 2012-03-30T14:27:10.037 回答