2012-03-29 89 views
0

我有一個HTML的片段,它包含在模板化EPiServer頁面的屬性中,該HTML內有一個img標記,其中包含一個相對URL。如何更改前綴EPiServer添加到HTML中的src屬性

當頁面被查看時,我可以看到標籤的src屬性已被改爲具有前綴/ProjectName/Templates/Pages/

據我所知,這是被由存儲旁邊的ASPX模板(這活確實確實在Templates\Pages)的正確定位其目的是HTML片段的部分是HtmlRewriteToExternal使圖像文件,但是圖像進行在我的情況下,實際上存儲在PageFiles/nnn/(其中nnn實際上是父頁面的PageFolderID),我需要以某種方式使改變的html反映出來。

我創建了一個繼承自FriendlyUrlRewriteProvider的類並註冊了我的類。我可以調試應用程序,並通過重寫的方法觀察請求,但是我仍然無法看到添加前綴的位置,或者知道如何更改它。我可以將src標記更改爲我的類中的不同相對路徑,但前綴仍在添加。

我已經閱讀了關於EPiServer url重寫的所有內容,但無法找到任何提示該前綴被添加到什麼位置的提示,或者如何停止或更改它。

事情我已經閱讀:


我打開了什麼,我其實是想做到完全不同的解決方案,這是一個如下:

我有多個獨立的靜態html文件和相關的圖像/ css/js文件,我試圖用EPiServer存儲/發佈。每一組的結構看起來像

  • setfolder/
    • htmlfileA.html
    • htmlfileB.html
    • CSS/
      • 風格。CSS
    • 圖像/
      • piccy1.png
      • piccy2.png
    • JS/
      • magic.js

我想我應該爲這個集合創建一個EPiServer頁面,然後爲每個html文件創建一個子頁面,將這些文件中的html存儲在子頁面的屬性中。目前,我將相關的靜態文件存儲在相關的setfolder頁面的PageFiles中,因爲這似乎是放置它們時邏輯上最一致的地方。

+0

有人有類似的問題,沒有解決http://world.episerver.com/Modules/Forum/Pages/thread.aspx?id=41534 – 2012-03-30 09:17:50

+0

另一個未回答的問題:「阻止UrlReWrite爲特定的頁面類型」http: //world.episerver.com/Modules/Forum/Pages/thread.aspx?id=19395 – 2012-03-30 09:52:16

+0

我向EPiServer論壇發佈了類似的問題。 http://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=57845 – 2012-03-30 10:26:54

回答

1

如果沒有在您面前看到它,就很難提供最好的解決方案。但是一個簡單的方法是在將屬性打印到頁面時更改HTML代碼。

喜歡<%= ChangeRelativeLinks(當前頁[「HtmlCode」]作爲字符串)%>

而在ChangeRelativeLinks(串htmlCode)你改變爲相對鏈接和圖像到pagedir一個正則表達式或類似絕對路徑。

+0

這是一個好主意,我沒有想到這一點。謝謝! – 2012-04-02 09:19:30

+0

將相對鏈接更改爲絕對鏈接後,即將發送頁面到客戶端時發生的html重寫將忽略它們。好極了!這裏是我生成的絕對路徑前綴:'ResolveUrl(String.Format(「〜/ PageFiles/{0} /」,GetPage(CurrentPage.ParentLink)[「PageFolderID」]));' – 2012-04-03 09:23:40

+0

更多的代碼隱藏我'已使用可在這裏:https://gist.github.com/2291964(隨意複製代碼粘貼到您的答案) – 2012-04-03 13:27:56

1

如果您將圖像存儲在PageFiles這是一個虛擬路徑提供程序,您應該能夠簡單地通過使用API​​獲取您的文件的網址。在PageData類(即您的模板中的CurrentPage)中,您有一個名爲GetPageDirectory()的方法,它可以獲取頁面文件夾。

您可以在此處詳細瞭解VPP概念:

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

無需對URL重寫提供商爲了這個,我想。

+0

感謝您的回答。我已經使用了GetPageDirectory(),所以我知道你的意思,我甚至創建了該擴展https://gist.github.com/2205546/5258de36e14b6487d38978a6e1e05f93ce4a8c89#L37我遇到的問題是整個html塊將在一個由用戶設置的html頁面屬性,因此我沒有機會直接設置src屬性。因此,雖然我可以通過編程方式找到圖像的路徑,但我無法弄清楚如何將該路徑應用於src屬性,或重定向瀏覽器的請求。擺弄html重寫器是我目前最好的猜測。 – 2012-03-29 21:37:15