header dotnetnuke footer

header - DotNetNuke: encabezado, contenido y pie de página



footer (1)

¿Hay alguna manera, como uno hace con WordPress, para crear un header.php, theme-file.php y footer.php y luego combinarlos usando ganchos? Me parece una locura duplicar los archivos de máscara, especialmente cuando necesita realizar cambios menores en el contenido de un encabezado o pie de página.

Muchas gracias


Una máscara es solo un control ascx, por lo que puede encapsular partes de la misma como lo haría con cualquier otra vista de WebForms. Puede poner el contenido del encabezado / pie de página en su propio archivo ascx y luego simplemente incluirlos en el skin. El único lugar en el que se encontrará con un problema es que no creo que DNN permita tener paneles en controles separados; todo lo demás debería ser juego limpio.

Deberá ponerlos en un directorio separado, para que no sean vistos como otras máscaras por DNN.

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

Luego, en las máscaras, incluye los controles registrándolos en el encabezado:

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

E inclúyalo a través de la sintaxis de control:

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

El control no tendrá automáticamente acceso a ningún contexto del skin, por lo que si necesita usar SkinPath o PortalId o algo así, deberá pasarlo manualmente al control. En el control, defina una propiedad para recibir el valor (usando una sección <script runat="server"> para escribir el código [establezca el atributo de Language en el control en C # para esto]):

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

Luego pasa el valor en la piel:

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