http://summit.solidq.com/
A lo largo de esta sesión, veremos como puede Windows PowerShell ayudar en tareas de desarrollo para SharePoint 2010. Empezaremos con un breve repaso a la programación en Windows PowerShell, para seguidamente poner todo en práctica, desarrollando scripts con los que resolver en segundos, problemas cotidianos que pueden llevar horas.
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Personalización y extensión del webPart de consulta de contenidos (CQWP)
1. 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
czaragoza@solidq.com
2. 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.
3. ¿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 dea pie
4. ¿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
6. 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é esel Content By Query Web Part?
7. CQWP para la gente de a pie
¿Qué esel Content By Query Web Part?
35
4 1
97
35
7 9
Lista de SharePoint CQWP Query Resultado
9. 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)
10. 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
11. ¿Qué lo hace especial? (3)
CQWP para la gente de a pie
12.
13.
14. 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.
15. CQWP para la gente de a pie
Personalización del aspecto visual (2)
XML
ContentQueryMain.xsl
Header.xsl
ItemStyle.xsl
HTML
16. 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)
17. 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>
20. 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?
21. CQWP para superhéroes
CómoextenderCQWPpasoapaso(1)
' Incluir DLL y referencia.
Imports Microsoft.SharePoint.Publishing.WebControls
Public Class CQWPEx
Inherits ContentByQueryWebPart
Protected Overrides Sub CreateChildControls()
End Sub
End Class
22. CQWP para superhéroes
CómoextenderCQWPpasoapaso(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
23. CQWP para superhéroes
CómoextenderCQWPpasoapaso(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
24. CQWP para superhéroes
CómoextenderCQWPpasoapaso(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
25. CQWP para superhéroes
CómoextenderCQWPpasoapaso(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
28. 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 desdeXSLT
30. 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: