2011-10-05 78 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

相关问题