Page Templates con ayuda del Sharepoint Designer

El otro día me acordé del artículo que ya escribí acerca de como realizar personalizaciones rápidas en sharepoint. El ejemplo realizaba modificaciones en modo unghosted, lo que implicaba que cada que se consume las páginas se estaba accediendo a la bbdd para cargarla.

Como alternativa a las personalizaciones sobre la bbdd de contenidos debemos de realizar nuestras páginas como page templates  o applications pages, e incluso podemos pensar en webparts antes de hacer que una página sea unghosted.

Las page templates consisten en páginas que están físicamente en el servidor frontal se ejecuta en «safe mode», es decir no permite ejecutar código en servidor, y permite customizarla.

 

Un caso real

En el proyecto se planteaba una solución sobre lista de wss3 la cual debía de mostrar una vista y comportamiento especial en las páginas de DispForm, NewForm y EditForm. Si huebiéramos modificado la página directamente desde Sharepoint Designer habríamos terminado rápidamente, pero a cambio habríamos acarreando otros problemas futuros como pueda ser el backup/restore del portal y el rendimiento.

 

Comenzamos haciendo la lista con la estructura, lo recomendable es hacerlo definiendo un contenttype. Una vez creada la lista, abriremos el sharepoint Designer y entraremos en el formulario a modificar, en este ejemplo en DispForm.

 

Una vez abierto lo modificaremos con la estructura que deseemos, tal y como explicaba en mi anterior artículo.

 

image

 

Una vez modificada, lo que haremos será quedarnos con el código fuente, pero ojo no guardaremos el fichero, solo lo utilizaremos para renderizar el resultado y hacernos una idea en tiempo de diseño.

Ahora crearemos un proyecto en blanco con la estructura adecuada para construir una  feature de sharepoint. Añadiremos una nueva páginas aspx sin código y pegaremos el código generado por el designer.

image

Si nos fijamos en el código generado por el designer veremos que nos ha incrustado un DataFormWebPart y que tiene como datasource y parámetros referencias a la lista pero por ID. Esto significa que todo lo que hagamos no podremos moverlo a otro sitio ya que la instancia de la lista tendrá otro id distinto aunque tenga la misma estructura.

Para solucionarlo accederemos por nombre en lugar de id, por lo que cambiaremos todas las referencias de ListId por ListName y el guid de la lista por el nombre de la lista. También quitaremos el parámetro

<ParameterBinding Name=»ListID» Location=»None» DefaultValue=»{3C54AAE0-1C6F-4FFD-A3F9-F3BB6FEDA399}»/>  por  <ParameterBinding Name=»ListName» Location=»None» DefaultValue=»»/>

 

image

 

Para verificar que lo hemos hecho correctamente copiaremos el código y lo pegaremos desde el designer en la página que tomamos como ejemplo. PERO SIN GUARDAR DESDE EL DESIGNER!!!.

Ahora tendremos que indicar a sharepoint que la página que hemos hecho se utilizará como template. Crearemos un fichero xml en el que indicaremos lo siguiente:

 

<Elements xmlns=»http://schemas.microsoft.com/sharepoint/»>

  <Module Path=»PagesTemplates» Url=»Notas de Gastos/Forms» >
    <File Url=»NotasDeGastosDispForm.aspx» Path=»NotasDeGastosDispForm.aspx» Type=»Ghostable» />
    <File Url=»NotasDeGastosEditForm.aspx» Path=»NotasDeGastosEditForm.aspx» Type=»Ghostable» />
    <File Url=»EntregarNotasDeGastosForm.aspx» Path=»EntregarNotasDeGastosForm.aspx» Type=»Ghostable» />
  </Module>

</Elements>

El atributo path indica la ruta física del directorio y de la página, y el atributo Url indica el path relativo de la url desde donde se accederá.

Ahora solo tendremos que terminar de configuar nuestra feature, instalarla y activarla.

Al activarla, si actualizamos nuestro explorador del designer veremos como ha aparecido nuestra página. Fijaros que no tienen ningún indicador de que es unghosted.

 

image

Ahora solo nos quedará indicar a la lista que utilice nuestra página cuando se acceda a la Vista de propiedades desde DispForm. Para ello podemos hacerlo desde el designer en caso de las lista, y para las librerías de documentos por código desde un SPFeatureReceiver, en el evento FeatureActivated.

image

image

 

Algunos enlaces adicionales:

http://www.sharepointonlinkedin.com/post/2008/07/20/How-to-free-your-Data-View-Web-Part-(DVWP)-from-those-nasty-GUIDs.aspx

http://sharepoint-insight.blogspot.com/2008/07/dataform-webpart-escape-from-hardcoded.html

Publicado por

Mario Cortés

Mario Cortés Flores es MVP en Office 365, trabaja en Plain Concepts como Team Lead y escribe habitualmente en geeks.ms/blogs/mcortes y en Twitter @mariocortesf. Podréis encontrarlo colaborando activamente con la comunidad de MadPoint y SUGES

Un comentario sobre “Page Templates con ayuda del Sharepoint Designer”

  1. Hola Mario, muy buen ejemplo:-)
    Hay otro «truco» en todo esto, las templates como bien indicas estarán en el sistema de archivos del servidor frontal(o en varios), mientras estas en fase desarrollo y una vez activado la featuures podrás tocar directamente en el sistema de archivos la plantilla para poder hacer ajustes sin tener que estar activando y desactivando la feature, los cambios se reflejaran en el mismo momento de guardar la template.
    Un Saludo
    Jorge

Responder a jdieguez Cancelar respuesta

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