martes, 27 de octubre de 2009

Master pages en SharePoint

WSS 3 fue diseñado para trabajar con páginas maestras, lo que constituye un importante cambio respecto a WSS 2, y facilita enormemente la personalización de un sitio a través de distintas páginas. En esta artículo comentaré algunos puntos importantes a tener en cuenta a la hora de trabajar con este tema en SharePoint:

Introducción

Las páginas que están vinculadas a una página maestra se denominan content pages. Estas páginas comparten un diseño común, provisto por la página maestra. La página maestra contiene placeholders que pueden ser reemplazados por contenido único.
Un importante punto a tener en cuenta es que las páginas maestras que utilizan las application pages son distintas a las que utilizan las site pages. La mayoría de las application pages trabajan con la página maestra llamada application.master, que no puede ser personalizada. Si están buscando un método que afecte a los dos tipos de páginas, les recomiendo que lean el artículo Cambios de estilos en SharePoint.
Default.master es la página estándar  utilizada por por las site pages y pueden encontrarla en C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\GLOBAL\default.master. Cuando ustedes crean un nuevo sitio en SharePoint, se crea automáticamente la galería Master Page con una instancia de la default.master en /_catalogs/masterpage/default.master. A esta altura el lector ya habrá descubierto que las páginas maestras dentro de los sitios se comportan de la misma manera que las páginas de sitio y aplican los mismos conceptos. Por ejemplo, usted podría personalizar una página maestra desde SharePoint Designer y los cambios se almacenarían en la base de datos.
Qué podemos definir en una página maestra?
  • Vínculos estándar que apliquen a todas las páginas
  • Menús compartidos
  • Iconos, gráficos, logos, etc.
  • Componentes de navegación como el mapa del sitio
  • Named Placeholders
  • Delegate Controls

Named Placeholders

Como dijimos anteriormente, los named placeholders constituyen un mecanismo de extensibilidad permitiendo agregar contenido único en una página de sitio o plantilla de páhina que esté vinculada a una página maestra. El siguiente HTML es un pequeño extracto de una página maestra en SharePoint para “graficar” esta funcionalidad.
<HEAD runat="server">
<SharePoint:CssLink ID="CssLink1" runat="server"/>
<SharePoint:Theme ID="Theme1" runat="server"/>
<Title ID=onetidTitle>
      <asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/>
    </Title>
</HEAD>

image 

CssLink y Theme existen también en application.master y ese es uno de los motivos por el cual afectan a ambos tipos de páginas, a diferencia de la personalización de la página maestra que estamos viendo en este momento.

Veamos ahora como se ve el named placeholder en una plantilla de página:

<%@ Page MasterPageFile="~masterurl/default.master" %>
<asp:Content ID="PageTitle" runat="server" ContentPlaceHolderID="PlaceHolderPageTitle"> Home de Surpoint
</asp:Content>

Controles de Navegación

Varios opciones de navegación pueden ser modificadas en las páginas maestras. Este tema está fuera del alcance de este artículo, pero a modo de ejemplo es bueno saber que puede alterarse mediante programación el funcionamiento de el menú lateral o superior en el evento de activación de una feature. Lo interesante de este punto es que mediante programación de pueden lograr resultados que no pueden alcanzarse con la funcionalidad OOTB (out of the box).

Delegate controls

Los controles delegados constituyen una potente funcionalidad de sharepoint que definen regiones dentro de las páginas maestras que pueden ser sustituidas para resolver algún requerimiento. Lo más interesante es que esto puede ser realizado sin necesidad de alterar la página maestra, ya que la operación se realiza a través de una feature. Para mayor información consultar el artículo Mi primer delegate control.

Personalizando default.master

Como dijimos anteriormente, esto es algo que puede hacerse mediante Sharepoint Designer. Si optamos por esa opción, sepamos que aplican las reglas de ghosting de las sites pages. En este artículo veremos como realizar estos cambios a través de Visual Studio. Esto abarca tres pasos:

  1. Crear la plantilla de página maestra
  2. Instanciarla
  3. Redireccionar las páginas a nuestra nueva página maestra
Para crear la plantilla de página maestra, podemos hacer una copia de la default.master y modificarla o empezar desde cero. Recomiendo la primera.

Para instanciarla, usaremos una feature que incluya un elemento de módulo. Ejemplo:
<Module Name="MasterPages" List="116" Url="_catalogs/masterpage">
<File Url="Surpoint.master" Type="GhostableInLibrary" />
</Module>

Algunas observaciones:

  • 116 identifica la galería de páginas maestras
  • GhostableInLibrary significa que la página maestra se instanciará en una librería de páginas maestras
El último paso es redireccionar las páginas de sitio a la nueva página maestra. Afortunadamente esto se puede realizar en forma sencilla programáticamente en un evento de activación de feature.:

SPWeb sitio= SPContext.Current.Web;
string PathPagMaestra = sitio.ServerRelativeUrl;
if (!PathPagMaestra.EndsWith(@"/")) PathPagMaestra+= @"/";
PathPagMaestra+= @"_catalogs/masterpage/Surpoint.master";
sitio.MasterUrl = PathPagMaestra;
sitio.Update();

Algunas observaciones más:

  • El ámbito de las páginas maestras es sitio (no colección de sitios).
  • Ademas de MasterUrl existe CustomMasterUrl. Esto permite tener una segunda página maestra e intercambiarlas programáticamente.
Hasta aquí este artículo introductorio. Pueden encontrar información adcional en Automated SharePoint Site Branding.

Como siempre, espero que les sea útil. Hasta la próxima!

0 comentarios:

Publicar un comentario en la entrada