El servicio de metadatos administrados fue una de las grandes novedades que se introdujo en la versión de SharePoint 2010. Su éxito entre otros aspectos fue debido a varios aspectos :
- Posibilidad de categorizar elementos por metadatos
- Realizar búsquedas sobre estos elementos
Y a partir de esta posibilidad de extender la taxonomía en nuestros desarrollos, desde ENCAMINA ya publicamos este artículo. De cómo hacer uso de la taxonomía para realizar una navegación en base a estos términos.
Con la versión 2013, la Taxonomía introdujo diversas mejoras, como por ejemplo poder personalizar la navegación sin introducir ninguna línea de código y mejoras en los sitios de publicación. Ahora bien mediante desarrollo, aún podemos realizar unos menús mucho más potentes.
¿Cómo?
Dentro de la Taxonomía, está claro que la podemos desgranar en Grupos, Términos, Subtérminos, etc. pero tenemos la posibilidad de introducir propiedades personalizadas en cada elemento. Debido a estas propiedades, podemos tener menús personalizados cross-site y que dependan de requerimientos de negocio.
Lugares dónde poder implementar este menú
Por lo general cuando abordamos un desarrollo, generalmente el menú es único en cada site de SharePoint. Pero si queremos, podemos dotarlo de un aspecto más corporativo y tener un menú corporativo para todos los sitios de los que se dispone dentro de la organización. De esta forma implementamos un único menú y es reutilizable en todos los sites de los que se dispone en la organización. Además, esta personalización se puede adaptar tanto para añadir diversos estilos «css» en el propio menú como con lógica de negocio. Por ejemplo esta línea solamente la visualizan los departamentos de Sistemas.
- Beneficios: Un único sitio dónde mantener el menú y no hace falta ir de un sitio a otro sitio realizando modificaciones.
- Aspectos no tan positivos: Hay que desarrollar (pero… ¿a quién no le gusta? :-))
Añadiendo Custom Properties
Las API que trae SharePoint son espectaculares y cualquier aspecto que se puede realizar mediante la Interfaz, se puede hacer mediante programación.
Mediante código Servidor
var session = new TaxonomySession(SpSite); var termStore = session.TermStores[NameTermStore]; var group = termStore.Groups[NameGroup]; var termSet=@group.TermSets[term];; var termUpdate = termSet.Terms[name]; termUpdate.SetCustomProperty(propertyName,propertyValue); termStore.CommitAll();
Mediante código cliente
var context = SP.ClientContext.get_current(); var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context); var termStore = taxonomySession.getDefaultSiteCollectionTermStore(); var termStoreGroup = termStore.createGroup(termGroupName, termGroupGUID); var termSet = termStoreGroup.createTermSet(termSetName, termSetGUID, lcid); termSet.setCustomProperty('_Sys_Nav_IsNavigationTermSet', "True"); context.load(termSet); context.executeQueryAsync( onSuccess, //I haven't defined this function here, but it's what should be done on success onError //Same goes for this ); context.load(termSet); context.executeQueryAsync( onSuccess, onError );
Resumen
SharePoint out of the box trae muchos elementos que facilita notablemente la adopción en diferentes entornos, pero hay que saber que extendiendo la plataforma se puede conseguir una solución mucho más completa y que se adapte perfectamente a los requerimientos solicitados. Eso sí, hay que saber en qué momento utilizar una opción u otra, ya que no en todos los aspectos tendremos que desarrollar ni en todos los escenarios tendremos que lidiar con lo que trae de fábrica SharePoint. Esto es lo bueno que tiene SharePoint: tiene multitud de opciones y seleccionar una u otra depende de nuestro criterio.