SharePoint 2010: Personalización de la navegación (I)!

Uno de los elementos de un sitio de SharePoint que se puede personalizar de acuerdo a distintas técnicas es el menú de navegación vertical. En este primer artículo vamos a ver como se puede personalizar la navegación de un sitio mediante el modelo de objetos, vamos a utilizar un Feature Event Reciver:

  • En Visual Studio 2010 creamos un proyecto de tipo “Empty SharePoint Project” y elegimos como tipo de despliegue “Deploy as farm solution”.
  • Añadimos al proyecto una Feature que configuramos de forma que el ámbito de la misma sea “Web”.
  • Añadimos un Feature Event Receiver y añadimos una directiva using a Microsoft.SharePoint.Navigation.
  • Codificamos el método FeatureActivated() de la siguiente forma:
   1: public override void FeatureActivated(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb = (SPWeb)properties.Feature.Parent;

   4:     if (spwWeb != null)

   5:     {

   6:         SPNavigationNode spnNodo = null;

   7:         foreach (SPNavigationNode n in spwWeb.Navigation.QuickLaunch)

   8:         {

   9:             if (n.Title == "Aplicaciones")

  10:             {

  11:                 spnNodo = n; 

  12:                 break;

  13:             }

  14:         }

  15:         //Si no existe la sección...

  16:         if (spnNodo == null)

  17:         {

  18:             spnNodo = new SPNavigationNode("Aplicaciones","", false);

  19:             spwWeb.Navigation.QuickLaunch.AddAsFirst(spnNodo);

  20:         }

  21:         spnNodo.Children.AddAsFirst(

  22:             new SPNavigationNode(

  23:                 "Nóminas", 

  24:                 "Documentos%20compartidos/Aplicaciones.aspx", 

  25:                 false));

  26:     }

  27: }

  • Codificamos el método FeatureDeactivating() de la siguiente forma:
   1: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb = (SPWeb)properties.Feature.Parent;

   4:     if (spwWeb != null)

   5:     {

   6:         SPNavigationNode spnNodo = null;

   7:         foreach (SPNavigationNode n in spwWeb.Navigation.QuickLaunch)

   8:         {

   9:             if (n.Title == "Aplicaciones")

  10:             {

  11:                 spnNodo = n; 

  12:                 break;

  13:             }

  14:         }

  15:         if (spnNodo != null)

  16:         {

  17:             SPNavigationNode spnNodoHijo = null;

  18:             foreach (SPNavigationNode n in spnNodo.Children)

  19:             {

  20:                 if (n.Title == "Nóminas")

  21:                 {

  22:                     spnNodoHijo = n; 

  23:                     break;

  24:                 }

  25:             }

  26:             if (spnNodoHijo != null)

  27:             {

  28:                 spnNodoHijo .Delete();

  29:  

  30:                 if (spnNodo.Children.Count == 1)

  31:                 {

  32:                     spnNodo.Delete();

  33:                 }

  34:             }

  35:         }

  36:     }

  37: }

  • Comprobamos que el menú de navegación se ha personalizad de acuerdo al código anterior:
image image

 

Y hasta aquí llega este primer artículo sobre como personalizar la navegación de un sitio de SharePoint.