DotNetNuke - 标题,内容和页脚

时间:2012-05-09 09:07:26

标签: header dotnetnuke footer

有没有像WordPress那样的方法来创建header.php,theme-file.php和footer.php,然后使用钩子组合它们?对我来说,复制皮肤文件似乎很疯狂,尤其是当您需要对页眉或页脚的内容进行微小更改时。

非常感谢

1 个答案:

答案 0 :(得分:12)

皮肤只是一个ascx控件,因此您可以像封装任何其他WebForms视图一样封装它的一部分。您可以将页眉/页脚内容放入自己的ascx文件中,然后将它们包含在外观中。你唯一会遇到这个问题的地方是我不认为DNN支持在单独的控件中使用窗格;其他一切都应该是公平的游戏。

您需要将它们放在一个单独的目录中,这样DNN就不会将它们视为其他皮肤。

-MySkin
--Controls
---Header.ascx
---Footer.ascx
--Home.ascx
--Home.doctype.xml
--Interior.ascx
--Interior.doctype.xml

然后,在皮肤中,通过在标题中注册它们来包含控件:

<%@ Register TagPrefix="myskin" TagName="Header" Src="Controls/Header.ascx" %>
<%@ Register TagPrefix="myskin" TagName="Footer" Src="Controls/Footer.ascx" %>

并通过控制语法包含它:

<myskin:Header runat="server" />
....
<myskin:Footer runat="server" />

控件不会自动访问皮肤的任何上下文,因此如果您需要使用SkinPathPortalId或类似的内容,则需要将其传递给手动控制。在控件中,定义一个属性来接收值(使用<script runat="server">部分来编写代码[将控件中的Language属性设置为C#]:

<script runat="server">
public string SkinPath { get; set; }
</script>

然后传递皮肤中的值:

<myskin:Header runat="server" SkinPath="<%# SkinPath %>" />