Varios SitemapProviders en la misma App Web (archivos .sitemap)

Una de las tantas preguntas frecuentes en los grupos de noticias de asp.net y tambien de algunos amigos es de como separar los items de menú principal (y más aún cuando hay elementos de secciones privadas o de administración), aqui coloco algunos tips a tener en cuenta y lo que podemos hacer. 

Filtrando los items del sitemap

En el origen de datos de sitemap tenemos la posibilidad de filtrar desde que nodo publicar los items del menu

<asp:SiteMapDataSource ID="SiteMapDataSourceMenuPrincipal"         
      runat="server"          
      StartingNodeUrl="~/admin/index.aspx" />

Esto es bueno cuando queremos que desde un subidirectorio solamente presentar en un submenu los items internos, pero…
De donde obtiene los items?

Como siempre digo la «magia» está en que hay un proveedor sitemap por defecto el cual obtiene los datos del web.sitemap, pero tenemos la posibilidad de agregar nuestros propios proveedores de mapas del sitio.
Para los que somos curiosos el proveedor por defecto se llama AspNetXmlSiteMapProvider y se encuentra en el web.config base, su ubicacion
C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG

Separando los itemes (nodos) en archivos y como utilizarlos

Tenemos dos maneras de implementar en diferentes archivos el contenido de los items del sitemap

  1. En el mismo web.sitemap, asignar aun sitemapNode un archivo fisico separado
  2. Definir nuevos proveedores de sitemap en el web.config

 

OPCION 1: Para cada siteMapNone indicar en que archivo fisico se encuentran los items
Aqui podremos tener algo asi:

<siteMapNode siteMapFile="~/admin/Web.STARWARS.ADMIN.sitemap"></siteMapNode>

Donde el atributo puede ser:

  • Una referencia relativa a la aplicación, como ~/admin/Web.STARWARS.ADMIN.sitemap (teniendo en cuenta signo ~ hace referencia a la appweb)
  • Una ruta de acceso virtual, como /admin/… (como cualquier source en html)
  • Una referencia a la ruta de acceso relativa a la ubicación del archivo del mapa del sitio actual, como admin/Web.STARWARS.ADMIN.sitemap.

 

OPCION 2: Implementar nuevos proveedores de sitemap

Aqui deberiamos agregar a nuestro web.config en la seccion correcta un nuevo proveedor

<siteMap enabled="true">
    <providers>
        <add name="STARWARS.ADMIN.SiteMapProvider"
            description="Mapa del sector de Administracion"
            type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
            siteMapFile="~/admin/Web.STARWARS.ADMIN.sitemap" />
    </providers>
</siteMap>

Es una coleccion entonces podriamos tener varios

<siteMap enabled="true">
    <providers>
        <add name="STARWARS.ADMIN.SiteMapProvider" ...
        <add name="STARWARS.JEDIS.SiteMapProvider" ...
        <add name="STARWARS.SITHS.SiteMapProvider" ....

Incluso es conveniente para una mejor administración coloar un proveedor por defecto para no estar especificandolo luego en cada lugar que deseamos utilizarlo

<siteMap defaultProvider="STARWARS.JEDIS.SiteMapProvider" enabled="true">

Y mas aun si eliminamos los anteriores (el proveedor por defecto AspNetXmlSiteMapProvider), que como es una coleccion podemos hacer un clear

<siteMap defaultProvider="STARWARS.ADMIN.SiteMapProvider" enabled="true">
   <providers>
       <clear/>         
       <add...

Para utilizar tenemos la propiedad SiteMapProvider en el SiteMapDataSource

<asp:SiteMapDataSource ID="SiteMapDataSourceMenuPrincipal" 
        runat="server" 
        SiteMapProvider="STARWARS.ADMIN.SiteMapProvider"/>

 

 

Enlaces:

Fotógrafo del Windows Vista

Estaba tratando de cambiar jugando un poco con los temas de escritorio del Windows Vista y con los fondos de pantalla de la edición Home Premium (que lamentablemente no trae el escritorio superactivo con el Dreamscene) y me tope googleando con el «fotógrafo del Vista» Hamad Darwish (vive en Kuwait y estudio Radiologia en EEUU, con 24 años) y con que no todos sus trabajos estan en los wallpapers (una interesante entrevista), tan solo 5 de ellos (tomo 6000 fotografías en 10 a 12 dias, un promedio de  500 to 600 tomas por día). Por suerte subió las imagenes que selecciono para el Vista
Aquí esta su fotoblog completo en Flickr (la verdad muy bueno)

 Wallpaper01 Wallpaper03

Para mis amigos fotografos las diferentes características tecnicas (equipos, filtros, software)

Pero quien como fue que llego hasta nuestas queridas PC?
La encargada de los diseños del nuevo windows era Jenny Lam (que a su cargo realizo y ayudo en proyectos de Windows Vista, Aurora, Vista swoosh, Icons, Segoe UI, Vista/Office packaging, Wallpapers) en este último proyecto encaro por el lado de no ir a empresas de profesionales (que encarecían por las licencias de uso en nuestros queridos escritorios, estas licencias «internacionales» incluso no por años sino por décadas) entonces fue a buscar las imagenes al fotoblog mas famoso Flickr, a los amateurs que eran los mejores.
Pero tambien la noticia sería que esta diseñadora dejo de trabajar en MS el 31/Marzo de 2007

 

 

Enlaces:
Hamad Darwish
http://www.hamaddarwish.com
http://www.hamaddarwish.com/vista.html

Fotoblog completo
http://www.flickr.com/photos/darwishh/
Seleccion para Window Vista: http://www.flickr.com/photos/darwishh/sets/72157594510047657/