Skip to main content

Navegación por perfiles utilizando metadatos y Content Query WebPart

Resumen

En este artículo, vamos a ver cómo podemos aprovechar la potencia de los metadatos administrados, combinarlos con la flexibilidad del Content Query WebPart (CQWP), para conseguir una navegación de contenidos por perfiles, dentro de un portal de publicación con acceso anónimo.

Visualizando el objetivo final

Antes de entrar al detalle con la parte más técnica, vamos a ver el resultado final de lo que se pretende construir.

Partimos de un portal de publicación con SharePoint 2010 y acceso anónimo. En la fase de definición de la arquitectura de la información, se ha decidido que toda página del portal, debe estar catalogada con un perfil (o varios), entendiendo Perfil, como un ‘tag’, que define a qué tipo de usuario puede interesarle ese contenido. Ejemplos de perfiles serían: jóvenes, tercera edad, inmigrantes, emprendedores, etc.

Utilizando estos perfiles, desde la parte pública del portal, se ofrecerá una navegación por perfiles, donde se listen todos los contenidos que están dedicados a un perfil concreto.

Para la redacción de este artículo, hemos utilizado varias capturas de pantalla del nuevo portal del Ayuntamiento de Sagunto ( http://www.sagunto.es/), que ha sido publicado recientemente y que ha sido desarrollado por ENCAMINA ( http://www.encamina.com).

Figura 1.- Página principal con el menú de navegación por perfiles.

Con esta navegación por perfiles, si un usuario selecciona el perfil ‘Jóvenes’, se visualiza:

Figura 2.- Ejemplo de visualización por perfil.

Implementación y desarrollo

Para la implementación, se hará uso de una de las novedades más destacadas de SharePoint 2010: "El servicio de metadatos administrados". Con este nuevo servicio, vamos a poder definir toda la Taxonomía de la organización, algo fundamental en cualquier tarea de arquitectura de la información en un portal. Para luego, poder referenciar esa taxonomía, desde campos de listas y bibliotecas. De esta forma, se centraliza la definición de los términos, lo que facilita su reutilización.

Antes de nada, vamos a crear la Taxonomía necesaria en el almacén de términos. Desde la administración del almacén de términos, creamos un nuevo conjunto de términos:

Figura 3.- Creación de una taxonomía en el almacén de metadatos administrados.

Cuando creamos el almacén de términos, hay una opción que conviene mencionar, se trata de la opción “Directiva de envío”. Esta opción es muy útil para Taxonomías (sobre todo a nivel de Intranet), y te permite definir si quieres dejar abierto el conjunto, para que los usuarios de la intranet puedan ampliar el conjunto de términos. Muy relacionado con está opción, esta el parámetro Contacto, que, de estar configurado y junto a la directiva de envío “cerrado”, permite que los usuarios puedan sugerir nuevos términos al administrador:

Figura 4.- Configuración de la opción “Directiva de envío”.

Le damos un nombre, en este caso, Perfil, y añadimos todos los términos para los perfiles:

Figura 5.- Taxonomía final creada.

En esta pantalla, fijaros que el término, puede definirse en varios idiomas (según las variantes configuradas) y además, permite definir “Otras etiquetas”, esto no es otra cosa que poder definir Sinónimos de ese mismo término. Por ejemplo, si tenemos como término: MOSS, seguramente nos interesará tener un sinónimo para: WSS, Microsoft Office Sharepoint Server, etc.

Una vez definida nuestra Taxonomía, tenemos que modificar el tipo de contenido de nuestras páginas, para enlazarlas a esta taxonomía. Para ello definiremos una columna de sitio, del tipo metadatos administrados:

Figura 6.- Definición de la columna de sitio de tipo “Metadatos administrados”

Nota: Para este artículo, la columna se ha definido utilizando la interfaz de usuario de SharePoint, pero se podría hacer de forma declarativa o programática. Si se desea profundizar en el tema, recomendamos la lectura de estos 2 excelentes artículos al respecto:

En la pantalla de configuración de la nueva columna, debemos seleccionar la opción: “Permitir varios valores”. Esto hará, que se puedan poner varios valores de la taxonomía en dicha columna, algo muy común en los portales de contenidos, ya que un mismo contenido puede estar destinado a varias temáticas (deportistas y jóvenes, emprendedores y jóvenes, etc).

Para terminar de configurar nuestra columna, debemos enlazarla con el conjunto de términos de nuestra taxonomía, que queremos utilizar, en nuestro caso, con los perfiles:

Figura 7.- Configuración del conjunto de términos a utilizar en la columna.

Una vez hecho, basta con modificar el tipo de contenido base de nuestras páginas (normalmente será el tipo: Página de artículo), para que se amplie con nuestra nueva columna de metadatos.

También se recomienda, para editar más fácilmente este campo, que desde SharePoint Designer 2010 modifiquemos aquellos ‘Page layouts’ basados en nuestro tipo de contenido, añadiendo un panel de edición:

Figura 8.- Añadiendo un control de tipo panel de edición.

E insertar en él, el campo Perfil. Así el usuario administrador, cuando cree un nuevo contenido, podrá completar ese campo directamente en la página, sin tener que ir a las propiedades, pero el usuario visitante no lo verá.

Ahora ya tenemos toda la infraestructura necesaria para sacar nuestro listado de perfiles.

Listando un conjunto de términos programáticamente

Ya que la taxonomía puede variar con el tiempo, nuestra navegación por perfiles debe ser capaz de reflejar estos cambios. Para ello, podemos usar el modelo de objetos de SharePoint para listar un conjunto de términos. En el siguiente listado tenemos el código necesario.

private void ListTermSetTaxonomy(string termSetName, int lcid, SPSite currentSite)
{
    using (currentSite)
    {
        SPTaxonomy.TaxonomySession session = new SPTaxonomy.TaxonomySession(currentSite);

        SPTaxonomy.TermStore termStore = session.DefaultSiteCollectionTermStore;
        SPTaxonomy.Group group = termStore.Groups["Marvel web site"];

        try
        {
            SPTaxonomy.TermSet termSet = group.TermSets[termSetName];

            foreach (SPTaxonomy.Term term in termSet.Terms)
            {                       
                foreach (SPTaxonomy.Label label in term.GetAllLabels(lcid))
                {
                    string msg = String.Format(" {0} - ln: {1} - df: {2}", label.Value, label.Language, label.IsDefaultForLanguage);
                    lblTermSetList.Text += msg;
                }

                lblTermSetList.Text += "<br>";
            }
        }
        catch (Exception ex)
        {
            lblTermSetList.Text = "Argument TermSetName incorrect!! ->" + ex.ToString();
        }               
    }
}

Listado 1.- Acceso programático al conjunto de términos.

Tened en cuenta que el código anterior también extrae los sinónimos de cada término, así como su variante por idioma.

Con esto y algo de diseño, ya tenemos nuestro menú con los perfiles.

Listando páginas con el CQWP

Partimos de una nueva página que contendrá un CQWP. Dicha página recibirá por QueryString el perfil que el usuario ha seleccionado. Veamos como configurar el CQWP:

Figura 9.- Control de configuración del CQWP.

En Origen, seleccionamos aquellos contenidos que parten del site principal. En este caso, es un portal con Variantes, así que seleccionamos la raíz del idioma deseado y descenderá de forma recursiva. En Tipo de lista queremos atacar la biblioteca de páginas. Podríamos también filtrar por un Tipo de contenido concreto, pero en nuestro caso no es necesario.

Ahora debemos indicarle al CQWP, que filtre los contenidos del Perfil recibido en la URL. Esto se hace con una de las novedades que trae en 2010:

  • PageFieldValue: Con este filtro, podemos sacar aquellos items que tienen una valor concreto en un determinado campo. Por ejemplo, aquellos elementos cuya fecha de creación sea mayor a una dada.
  • PageQueryString: Filtramos según un determinado parámetro de la QueryString.

Figura 10.- Ejemplo de configuración del CQWP.

En nuestro caso, si tenemos una URL del estilo: /NavByProfile.aspx?profile=jóvenes configuraremos el filtro como: [PageQueryString: Profile]

Una vez aplicada la configuración, tendremos un listado de todas las páginas, categorizadas según el perfil recibido como parámetro, que dada la URL anterior, serían aquellas páginas de perfil joven.

Conclusiones:

Gracias al nuevo servicio de Metadatos Administrados de SharePoint 2010, es mucho más sencillo categorizar la información, lo que a su vez, permite mejorar la navegación y búsqueda de la misma. Además, las mejoras del CQWP, facilitan enormemente la configuración de los filtrados, así como las capacidades a la hora de personalizar la presentación de la información.

Referencias:

Autores:

Luis Máñez | CTO | MCP SharePoint 2010 - Microsoft Active Professional 2011

Blog: http://geeks.ms/blogs/lmanez/default.aspx

Teresa Cebrián | UX Designer

Blog: http://blogs.encamina.com/filling-the-gap/

ENCAMINA ( http://www.encamina.com)

Microsoft está realizando una encuesta en línea para comprender su opinión del sitio web de. Si decide participar, se le presentará la encuesta en línea cuando abandone el sitio web de.

¿Desea participar?