Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor...
description
Transcript of Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor...
![Page 1: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/1.jpg)
Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo Cristian M. Zaragoza Gómez
CyB200002
Desarrollador SharePoint – Colaboración y Búsqueda MCTS, SharePoint 2010, Configuración & Desarrollo
![Page 2: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/2.jpg)
Objetivos de la sesión
Conocer el funcionamiento base y el alcance.
Aprender cómo personalizar el aspecto visual.
Aprender cómo extender la funcionalidad nativa.
Llamar a funciones .NET personalizadas desde el propio XSLT.
![Page 3: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/3.jpg)
¿Qué es el Content By Query Web Part?
Demo 1: Toma de contacto
¿Qué lo hace especial?
Personalización del aspecto visual
Demo 2: Slider de imágenes
Agenda
CQWP para la gente de a pie
![Page 4: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/4.jpg)
¿Eso es todo?
Cómo extender CQWP paso a paso
Demo 4: Paginación + filtrado dinámico
Insisto, ¿Eso es todo?
.NET desde XSLT
Demo 5: Invocando funciones .NET desde CQWP
Agenda
CQWP para superhéroes
![Page 5: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/5.jpg)
CQWP para la gente de a pie
![Page 6: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/6.jpg)
Herramienta orientada a diseñadores/desarrolladores, que…
permite reunir “trozos” de información con diferentes orígenes (listas, sitios…).
para después filtrar la información obtenida según se requiera…
y finalmente mostrar el conjunto de información filtrada en un único bloque.
CQWP para la gente de a pie
¿Qué es el Content By Query Web Part?
![Page 7: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/7.jpg)
CQWP para la gente de a pie
¿Qué es el Content By Query Web Part?
3 5
4 1
9 7
3 5
7 9
Lista de SharePoint CQWP Query Resultado
![Page 8: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/8.jpg)
DEMO Demo 1: Toma de contacto con CQWP
![Page 9: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/9.jpg)
Herramienta Nativa (OOTB) SharePoint Server (2007 y 2010)
Separación de capas: datos y presentación.
Mejorado en 2010 con los “Slots”.
Sencillo personalizar aspecto visual. Requiere conocimientos en XSLT.
RENDIMIENTO
CQWP para la gente de a pie
¿Qué lo hace especial? (1)
![Page 10: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/10.jpg)
Implementa un sistema de caché para optimizar las consultas.
Para ello se apoya en dos clases:
CrossListQueryCache
CrossListQueryInfo
A su vez éstas usan internamente SPSiteDataQuery.
CQWP para la gente de a pie
¿Qué lo hace especial? (2)
SPSiteDataQuery
Caché
CQWP
CrossListQueryCache
![Page 11: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/11.jpg)
¿Qué lo hace especial? (3)
CQWP para la gente de a pie
![Page 12: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/12.jpg)
![Page 13: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/13.jpg)
![Page 14: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/14.jpg)
CQWP para la gente de a pie
Personalización del aspecto visual (1)
Archivo Descripción
ContentQueryMain.xsl
Contiene la lógica que genera las llamadas adecuadas a
las plantillas de encabezado y elemento para cada
elemento.
ItemStyle.xsl
Contiene plantillas que definen cómo mostrar un
elemento. Estas plantillas reciben y procesan una fila de
datos cada vez, lo que permite garantizar que el estilo y
los datos de las filas de elementos sean coherentes.
Header.xsl
Contiene plantillas que definen cómo mostrar un
encabezado y garantizan la coherencia de los
encabezados de grupo.
![Page 15: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/15.jpg)
CQWP para la gente de a pie
Personalización del aspecto visual (2)
XML
ContentQueryMain.xsl
Header.xsl
ItemStyle.xsl
HTML
![Page 16: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/16.jpg)
En SharePoint 2010 aparece el concepto de slot.
Los slots permiten crear plantillas de presentación semánticas y reusables.
¿Cómo funcionan?
CQWP para la gente de a pie
Personalización del aspecto visual (3)
![Page 17: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/17.jpg)
CQWP para la gente de a pie
Personalización del aspecto visual (4) <xsl:template name="DetailedOverview" match="Row[@Style='DetailedOverview']" mode="itemstyle">
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="DisplayTitle">
<xsl:call-template name="OuterTemplate.GetTitle">
<xsl:with-param name="Title" select="''"/>
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
<xsl:with-param name="UseFileName" select="1"/>
</xsl:call-template>
</xsl:variable>
<p>
<strong><xsl:value-of select="$DisplayTitle"/></strong><br />
<xsl:value-of select="@Author"/>, <xsl:value-of select="@Date"/> </p>
<p>
<xsl:value-of select="@RollupImage"/>
<xsl:value-of select="@Details"/> </p>
<p>
<a href="{$SafeLinkUrl}">Read more</a>
</p>
</xsl:template>
![Page 18: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/18.jpg)
DEMO Demo 2: Slider de imágenes
![Page 19: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/19.jpg)
CQWP para superhéroes
![Page 20: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/20.jpg)
En muchas ocasiones, podemos necesitar “algo más”: Mostrar contenidos según idioma.
Paginar elementos.
Parámetros propios.
Filtrados dinámicos.
Contenidos aleatorios.
Etc.
Tendencia natural Desarrollar un nuevo Web Part.
Nueva tendencia natural Extender CQWP.
CQWP para superhéroes
¿Eso es todo?
![Page 21: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/21.jpg)
CQWP para superhéroes Cómo extender CQWP paso a paso (1)
' Incluir DLL y referencia.
Imports Microsoft.SharePoint.Publishing.WebControls
Public Class CQWPEx
Inherits ContentByQueryWebPart
Protected Overrides Sub CreateChildControls()
End Sub
End Class
![Page 22: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/22.jpg)
CQWP para superhéroes Cómo extender CQWP paso a paso (2)
' Añadir parámetros al fichero XSLT.
Protected Overrides Sub ModifyXsltArgumentList(ByVal e As System.EventArgs) ...
argList.AddParameter(“Locale", "", “1033”)
MyBase.ModifyXsltArgumentList(argList)
End Sub
![Page 23: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/23.jpg)
CQWP para superhéroes Cómo extender CQWP paso a paso (3)
' Sobrescribir esta función para filtrados dinámicos.
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
' Operador lógico (And, Or)
Me.Filter1ChainingOperator = FilterChainingOperator.And
' ID de la lista en la que vamos a filtrar
Dim filterField1ID As Guid = miLista.Id
Me.FilterField1 = filterField1ID.ToString
' Valor que ha de cumplir. Ej: Valor de la Query String
Me.FilterValue1 = “Categoria 1”
End Sub
![Page 24: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/24.jpg)
CQWP para superhéroes Cómo extender CQWP paso a paso (4)
'A esta función llegamos después de haber filtrado.
'Podemos “refinar” los resultados Paginado
'También podemos establecer configuración extra Ficheros XSLT
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
' Establecemos ficheros XSLT propios
Me.ItemXslLink = "/.../ItemStyleEx.xsl"
Me.MainXslLink = "/.../ContentQueryMainEx.xsl"
...
End Sub
![Page 25: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/25.jpg)
CQWP para superhéroes Cómo extender CQWP paso a paso (5)
' Recibe un DataTable con las filas ya procesadas (filtradas)
' Devuelve otro DataTable que será con que se cree el XML final.
' ¿Paginación?.
Protected Function processData(ByVal dt As DataTable) As DataTable
...
End Sub
![Page 26: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/26.jpg)
DEMO Demo 4: Paginación + filtrado dinámico
![Page 27: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/27.jpg)
CQWP para superhéroes
Insisto, ¿Eso es todo?
![Page 28: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/28.jpg)
Con CQWP hay que tocar XSLT…
y no es el mejor amigo del desarrollador.
.NET si puede serlo…
Sería genial ejecutar .NET desde XSLT, ¿verdad?
CQWP aprueba esta “unión”
CQWP prácticamente para todo.
CQWP para superhéroes
.NET desde XSLT
![Page 29: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/29.jpg)
DEMO Demo 5: Invocado funciones .NET desde CQWP
![Page 30: Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo | SolidQ Summit 2012](https://reader037.fdocuments.ec/reader037/viewer/2022102618/558ec89a1a28ab3e308b456c/html5/thumbnails/30.jpg)
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/
Síguenos: