2011-10-05 45 views
2

我是DNN的新手,很驚訝地發現該網站的HTML頭部被降級爲一個無法真正可靠修改的文件(Default.aspx),因爲升級DNN將覆蓋任何修改。有沒有什麼辦法可以從皮膚中覆蓋Default.aspx的功能?

我需要創建一個皮膚,並且爲了創建皮膚,我需要更改文檔類型,添加額外的元標記,鏈接元素,JS文件等。我知道這些變化中的一部分可以通過管理來實現,但由於它們是皮膚特定的,所以這樣處理似乎是錯誤的。我不想因爲已經提到的原因而修改Default.aspx,並且(如果第一個不夠糟),那裏的更改會影響整個站點,而不僅僅是應用皮膚的位置。

對於獲得更多頭部控制,我有哪些選擇?

回答

3

您CA使用40FINGERS StyleHelper Skin Object從外觀添加CSS,JS和meta標籤到頭部。我也聽說元標籤包含將被構建到DNN 6.1中的核心皮膚對象中,並且CSS和JS包含故事也將被更新。

除了自動包含skin.css(as @skajfes mentioned)之外,框架還包含[skinname] .css(如果存在)。

當一切都失敗了,你可以將控件添加到通過代碼頭(加<script runat="server">標籤在你的皮膚編寫代碼):

private void Page_Load (object sender, EventArgs e) 
{ 
    var link = new HtmlLink(); 
    link.Href = SkinPath + "example.css"; 
    link.Attributes["rel"] = "Stylesheet"; 
    this.Page.Header.Controls.Add(link); 
} 

對於文檔類型,你可以告訴DNN這DOCTYPE到通過添加一個doctype.xml文件來爲您的皮膚中的每個控件使用。請參閱wiki page on setting doctypes for details,但基本知識是,您包含一個名爲[skinname] .doctype.xml的文件,該文件具有一個XML元素<SkinDocType>,並且在其中包含您的doctype。在XML中表示doctype的最簡單方法是將包裝放在CDATA部分,因此您不必轉義尖括號。

+0

謝謝你的徹底解答。 40FINGERS StyleHelper看起來就像票。從閱讀文檔看,它看起來像涵蓋了我需要的每個用例,並且任意東西的AddToHead屬性都很棒。 –

+0

+1,我不知道約40指尖StyleHelper皮膚對象。尼斯。 – skajfes

4

您可以通過將名稱爲[skinfile] .doctype.xml的文件添加到皮膚文件夾來設置皮膚的文檔類型,即。如果你有一個皮膚Default.ascx,你可以在一個名爲Default.doctype.xml的文件夾中添加一個文件。在該文件中設置這樣的文檔類型:

<SkinDocType><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]></SkinDocType> 

,就像您在普通的HTML您可以鏈接到使用腳本和鏈接標籤JavaScript和CSS文件。鏈接然後放在文檔的主體部分。您可以使用Styles皮膚對象在頭部包含css文件。請注意,DotNetNuke會自動包含可在skin目錄中找到的skin.css。

我還沒有嘗試在皮膚本身中添加其他元標記,但我已經在模塊中完成了它。下面是我用來設置meta描述和關鍵字代碼:

public void Page_Load (object sender, EventArgs e) { 
    DotNetNuke.Framework.CDefault BasePage = Page as DotNetNuke.Framework.CDefault; 

    BasePage.KeyWords += "..."; 
    BasePage.Description = "..."; 

    base.Page_Load(sender, e); 
} 
+0

+1因爲我很欣賞你的答案。必須把它交給@bdukes,不過因爲他推薦的皮膚對象應該可以幫助我做我需要的一切。 –

+0

@chrisdpratt無需解釋,bdukes的答案更有用:)感謝+1,儘管 – skajfes

相關問題