Introducción
En este breve artículo veremos cómo trabajar con páginas maestras de SharePoint 2010 utilizando Visual Studio. En este caso no le daremos participación a SharePoint Designer, ya que se trata de un proyecto desarrollado completamente en Visual Studio y desplegado mediante paquetes WSP.
Paso 1 – Página maestra base
El primer paso será tomar una página maestra base. Podemos trabajar por ejemplo con la minimal.master de catálogo de páginas maestras u optar por una opción de codeplex en:
http://startermasterpages.codeplex.com/
En este caso usaremos la v4.aster. Vamos a la galería y la descargamos.
Paso 2 – Creación del módulo
Dentro de Visual Studio agregamos un nuevo ítem al proyecto, en este caso un módulo:
Luego eliminamos sample.txt
Y subimos nuestra página maestra (la del paso 1)
Elements.xml quedará así:
Modificamos Elements.xml como muestra la imagen para aseguramos que quedé en el cache.
Código final:
<?xml version=»1.0″ encoding=»utf-8″?>
<Module Name=»ModuleMasterPageSitioProyecto» List=»116″ Url=»_catalogs/masterpage»>
<File Path=»ModuleMasterPageSitioProyecto\PaginaMaestraSitioProyecto.master» Url=»PaginaMaestraSitioProyecto.master» Type=»GhostableInLibrary»/>
</Module>
</Elements>
Paso 3 – Feature
En el tercer paso creamos una feature se Scope Web y le incorporamos el módulo creado en el paso anterior.
Veremos que se incorporará automáticamente a nuestro paquete de despliegue:
Paso 4 – Evento de la feature
Agregamos el evento para activar y desactivar la feature y de esta forma asignar la página maestra:
Así queda el código:
namespace EMP_Procesos.Features.EMP_Pagina_Maestra_Sitio_Proyecto
{
[Guid(«blabla»)]
public class EMP_Pagina_Maestra_Sitio_ProyectoEventReceiver : SPFeatureReceiver
{
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb currentWeb = (SPWeb)properties.Feature.Parent;
currentWeb.MasterUrl = «/_catalogs/masterpage/PaginaMaestraSitioProyecto.master»;
currentWeb.CustomMasterUrl = «/_catalogs/masterpage/PaginaMaestraSitioProyecto.master»;
currentWeb.Update();
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWeb currentWeb = (SPWeb)properties.Feature.Parent;
currentWeb.MasterUrl = «/_catalogs/masterpage/v4.master»;
currentWeb.CustomMasterUrl = «/_catalogs/masterpage/v4.master»;
currentWeb.Update();
}
}
}
Paso 5 – Verificación de despliegue
En el catálogo de páginas maestras, debe aparecer:
También debe aparecer la característica:
Para este ejemplo, hicimos un cambio menor en la página maestra para verificar el funcionamiento:
<SharePoint:DeveloperDashboard runat=»server» />
<div id=»sitio_footer»>Pie de ejemplo</div>
</div>
El resultado es:
Bibliografía