DotNetNuke - 页眉、内容和页脚



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

非常感谢

外观只是一个 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 %>" />