WSS 3.0: Creando nuestras propias plantillas de páginas de Web Parts!

A la hora de visualizar información en la plataforma SharePoint, disponemos de un recurso bastante interesante: las páginas de web parts. Estas páginas de web parts se crean de acuerdo a una serie de plantillas predefinidas siguiendo el siguiente proceso:

  • Desde el menú Site Actions pulsamos la opción Create.
  • En la sección Web Pages elegimos Web Part Page.
  • En la pantalla que se abre (página spcf.aspx que reside en el directorio _layouts del serividor de SharePoint).
image image image

Hasta aquí todo perfecto, elegimos la plantilla, creamos la página y listo…pero aquí mi compañero Pablo me planteó una pregunta interesante: ¿Se podrán definir nuestras propias plantillas para crear páginas de Web Parts e ir más allá de las 8 que por defecto nos da SharePoint? Lógicamente, y conociendo las bondades de SharePoint, le contesté a Pablo sin conocer como hacerlo que seguro que sí…y efectivamente, claro que se puede…no me costó mucho encontrar en Google un par de pistas sobre como hacerlo:

  • En la primera, correspondiente a esta post, se comenta como se haría pero sin entrar en detalle.
  • A partir del post anterior, si que llegamos a como se hacía con la versión anterior de SharePoint que en WSS 3.0 & MOSS sigue funcionando. Se trata de este artículo de MSDN.

Bueno, pues con estas pistas vamos a ponernos manos a la obra para crear nuestra propia plantilla:

  • Lo primero que haremos es editar la página spcf.aspx y localizar la sección dónde se realiza la carga de las plantillas disponibles para añadir la referencia a nuestra plantilla. Esta página se encuentra en la siguiente ruta de nuestro servidor de SharePoint: C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATELAYOUTS.
  • La editamos con Visual Studio (por ejemplo) y buscamos la siguiente sección:

                                <Template_Control>

                                <SELECT id=”onetidWebPartPageTemplate” name=”WebPartPageTemplate” size=”9″ onchange=”DoTemplateOptionChange()”>

<OPTION value=”1″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option1%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”3″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option3%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”4″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option4%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”2″ selected=”true”><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option2%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”5″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option5%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”6″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option6%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”7″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option7%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”8″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option8%>” EncodeMethod=’HtmlEncode’/></OPTION>                                            

                                 </SELECT>

</Template_Control>

 

  • Para añadir una nueva referencia, simplemente añadimos antes de la etiqueta </SELECT> una nueva opción. Por ejemplo: <OPTION value=”9″> Mi Plantilla Personalizada</OPTION>.
  • Además, tenemos que cambiar el valor del atributo size de la etiqueta SELECT de 8 a 9.
  • Guardamos los cambios en la página spcf.aspx.
  • Lo siguiente que vamos a hacer es crear una imagen para esta nueva opción. Las imágenes de las plantillas de páginas de web part se almacenan en la siguiente ruta: C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATELAYOUTS1033IMAGES.
  • Las imágenes para las plantillas de páginas de web parts tienen un nombre característico: SPSTD#.GIF. Luego para la plantilla 9 simplemente añadimos SPSTD9.GIF (por facilidad, he creado esta imagen a partir de copiar una existente.
  • Si ahora refrescamos la página spcf.aspx, veremos que aparece la nueva opción con su imagen asociada.
image image image

Ya sólo nos queda añadir la plantilla física dónde corresponda. Este lugar no es otro que el path: C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATE1033STSDOCTEMPSMARTPGS. Como vemos, este directorio contiene archivos .aspx con el nombre característico spstd#.aspx. Por lo tanto, para la nueva opción de plantilla (la número nueve), tendremos que crear una página .aspx con el nombre spstd9.aspx. Con esto ya tenemos todo:

  • Hacemos un iisreset para que la nueva página sea “tenida en cuenta” por SharePoint.
  • Le damos un nombre a la página a crear.
  • Tras pulsarle al botón Create, veremos que se produce un error en SharePoint nada explicativo. Esto se debe (como explica Raghu Bangalore en este post) a que la página spcf.aspx usa para todo el procesado que necesita la dll OWSSVR.dll ubicada en C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12ISAPI…luego parece que su comportamiento y funcionalidad no puede ser alterado a priori.
image image Post_Plantillas_SharePoint_1

image

Luego mi gozo en un pozo…y esto que todo parecía ir como la seda. Pero, ¿tenemos alguna alternativa? Pues sí, y esta no es otra que la que nos propone Raghu y el artículo de MSDN comentado: crear nuestra propia página personalizada spfc.aspx y añadir un vínculo a la misma en la página Create.aspx. Veamos cómo afrontar esta alternativa:

  • En primer lugar, nos creamos la página personalizada que emule el comportamiento de spfc.aspx. En mi caso he cogido la que el propio Raghu tiene disponible en su post.
  • Si editáis la página, veréis como añadir nuevas plantillas de creación de páginas de web parts sigue la filosofía comentada. De hecho, la clave está como ya vimos en añadir nuevas opciones a la etiqueta <SELECT> y llevar la cuenta ;-):

                             <SELECT id=”onetidWebPartPageTemplate” name=”WebPartPageTemplate” size=”9″       

                                 onchange=”DoTemplateOptionChange()”>

                               <OPTION value=”spstd1″>Template1</OPTION>

                               <OPTION value=”spstd2″>Template2</OPTION>

                               <OPTION value=”spstd3″>Template3</OPTION>

                               <OPTION value=”spstd4″ selected=”true”>Template4</OPTION>

                               <OPTION value=”spstd5″>Template5</OPTION>

                               <OPTION value=”spstd6″>Template6</OPTION>

                               <OPTION value=”spstd7″>Template7</OPTION>

                               <OPTION value=”spstd8″>Template8</OPTION>

                               <OPTION value=”spstd9″>Template9</OPTION>

                             </SELECT>

  • Copiamos nuestra página personalizada en el directorio _layouts.
  • Editamos la página Create.aspx y añadimos un enlace a la página que acabamos de crear (justo bajo la referencia a la opción estándar de creación de páginas de web parts…os marco en negrita lo que he añadido):

                                               <table style=”padding: 3px 0px 3px 4px;” class=”ms-itemstatic” onclick=”javascript:NavigateInnerHref(event)” onmouseover=”this.className=’ms-itemhover’;ShowListInformation(‘<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_title%>”/>’,'<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_desc%>”/>’,’/_layouts/images/ltsmrtpg.gif’)” onmouseout=”this.className=’ms-itemstatic’;HideListInformation()” cellspacing=”0″ cellpadding=”0″ width=”100%” border=”0″>

                                                <tr>

                                                 <td valign=”top” nowrap class=”ms-descriptiontext” style=”padding-top:1px”>

                                                  <IMG src=”/_layouts/images/setrect.gif” width=5px height=5px alt=”<SharePoint:EncodedLiteral runat=’server’ text='<%$Resources:wss,viewlsts_wp_page_desc%>’ EncodeMethod=’HtmlEncode’/>”>&nbsp;

                                                 </td>

                                                 <td valign=”top” width=100% class=”ms-descriptiontext”>

                                                  <a id=”onetidWebPartPage” href=”spcf.aspx” target=”_self”><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,viewlsts_wp_page_title%>” EncodeMethod=’HtmlEncode’/></a>                                        

                                                 </td>

                                                </tr>

                                               </table>

                                               <table style=”padding: 3px 0px 3px 4px;” class=”ms-itemstatic” onclick=”javascript:NavigateInnerHref(event)” onmouseover=”this.className=’ms-itemhover’;ShowListInformation(‘<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_title%>”/>’,'<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_desc%>”/>’,’/_layouts/images/ltsmrtpg.gif’)” onmouseout=”this.className=’ms-itemstatic’;HideListInformation()” cellspacing=”0″ cellpadding=”0″ width=”100%” border=”0″>

                                                <tr>

                                                 <td valign=”top” nowrap class=”ms-descriptiontext” style=”padding-top:1px”>

                                                  <IMG src=”/_layouts/images/setrect.gif” width=5px height=5px alt=”<SharePoint:EncodedLiteral runat=’server’ text='<%$Resources:wss,viewlsts_wp_page_desc%>’ EncodeMethod=’HtmlEncode’/>”>&nbsp;

                                                 </td>

                                                 <td valign=”top” width=100% class=”ms-descriptiontext”>

                                                  <a href=”custspcf.aspx” target=”_self” id=”MyCustomPage”>My Custom Web Part Page</a>

                                                 </td>

                                                </tr>

                                               </table>

Sin más, ya sólo nos queda probar que todo funciona como se espera:

  • Vamos a la página de creación y aparece la nueva opción bajo la sección Web Pages.
  • Al pulsar, veremos que la página de creación tiene 9 plantillas disponibles y que justo la novena es la nueva plantilla que hemos añadido.
  • Ahora al pulsar el botón Create, todo irá perfecto (sólo un pequeño detalle, las imágenes que utiliza esta spfc.aspx personalizada tienen que estar en el directorio C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATEIMAGES).
Post_Plantillas_SharePoint_3 Post_Plantillas_SharePoint_4 Post_Plantillas_SharePoint_5

Y hasta aquí llega este post sobre como crear plantillas de páginas de web parts para WSS 3.0. Espero que os haya resultado interesante.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

7 comentarios en “WSS 3.0: Creando nuestras propias plantillas de páginas de Web Parts!”

  1. Mirando el ejemplo he visto que busca en las opciones un archivo de recurso . y lo he encontrado en
    C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12CONFIGResources

    edita el fichero , wss.es-es.resx y busca la cadena

    webpagecreation_layout_option8 , que es la descripcion de la pagina 8.

    agregar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *