Si l'on observe le fichier Onet.xml du template de site Publishing fourni en standard, on peut noter l'activation d'une feature de scope Web déterminant les options de navigation de portail :
<WebFeatures>
...
<Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">
<Properties xmlns="http://schemas.microsoft.com/sharepoint/">
<Property Key="InheritGlobalNavigation" Value="true"/>
<Property Key="ShowSiblings" Value="true"/>
<Property Key="IncludeSubSites" Value="true"/>
</Properties>
</Feature>
...
</WebFeatures>
On voit que la feature est accompagnée de propriétés. Ce qui nous intéresse alors est de savoir quelles sont les propriétés acceptées par la feature, quelles valeurs peut-on leur donner, et quel impact cela aura sur la navigation du site.
En poussant un peu notre investigation, on retrouve cette feature dans le répertoire [12]\TEMPLATE\FEATURES\NavigationProperties. Le fichier Feature.xml qu'il contient définit la feature comme suit :
<Feature Id="541F5F57-C847-4e16-B59A-B31E90E6F9EA"
Title="Portal Navigation Properties"
Description="Set per-site navigation properties."
Version="12.0.0.0"
Scope="Web"
Hidden="TRUE"
ReceiverAssembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
ReceiverClass="Microsoft.SharePoint.Publishing.NavigationFeatureHandler"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="NavigationSiteSettings.xml"/>
</ElementManifests>
</Feature>
Notons au passage que le fichier NavigationSiteSettings.xml déclaré en tant que ElementManifest est un fichier vide. Nous allons alors explorer la classe Microsoft.SharePoint.Publishing.NavigationFeatureHandler avec Reflector pour voir quelles informations elle traite.
Nous pouvons alors voir toutes les propriétes qu'accepte la feature "Portal Navigation Properties", à savoir :
- IncludeInGlobalNavigation
- IncludeInCurrentNavigation
- InheritGlobalNavigation
- InheritCurrentNavigation
- ShowSiblings
- IncludeSubSites
- IncludePages
- OrderingMethod
- AutomaticSortingMathod (oui, Mathod et pas Method)
- SortAscending
Ces noms évoquent sans doute quelque chose aux habitués de la plateforme de publication de MOSS 2007. En effet, on peut paramétrer ces options sur un site grâce à l'interface utilisateur dans la page "/_layouts/AreaNavigationSettings.aspx" accessible depuis le menu des actions du site
Afin de mieux se rendre compte de l'impact de chaque option sur la navigation, nous allons voir pour chacune d'entre elles les valeurs possibles ainsi que la répercussion sur cette page d'administration.
IncludeInGlobalNavigation et IncludeInCurrentNavigation
Ces deux options sont un peu particulières puisqu'elles définissent si le site courant doit être inclus dans la navigation actuelle ou globale du site parent. Ainsi, pour agir sur ces options avec l'interface utilisateur, il faut remonter au niveau supérieur et choisir de masquer ou non le sous-site dans les sections de navigation actuelle et globale.
Valeurs possibles :
- true - Inclut le site dans la navigation (actuelle ou globale).
- false - N'inclut pas le site dans la navigation (actuelle ou globale).
IncludeSubSites et IncludePages
Ces deux options indiquent si les pages ou les sous-sites doivent être automatiquement inclus dans la navigation. Notons que si la navigation hérite du site parent, ces options n'ont aucun sens.

Valeurs possibles :
- true - Inclut les pages ou les sous-sites.
- false - N'inclut pas les pages ou les sous-sites.
OrderingMethod
Cette option permet de définir le tri de tous les éléments de navigation.
Valeurs possibles :
- Automatic - Trie tous les types d'éléments automatiquement, et groupe les pages après tous les autres types.
- ManualWithAutomaticPageSorting - Trie tous les types d'éléments manuellement, à l'exception des pages, qui sont groupées et triées automatiquement après les autres types.
- Manual - Trie tous les types d'éléments manuellement.
AutomaticSortingMathod
Cette option, qui n'a de sens que si OrderingMethod n'a pas été défini à "Manual", permet de préciser le critère de tri automatique des éléments de navigation.
Valeurs possibles :
- Title - Trie les éléments alphabétiquement par leur titre.
- CreatedDate - Trie les éléments par leur date de création.
- LastModifiedDate - Trie les éléments par leur date de dernière modification.
SortAscending
Cette option, qui n'a de sens que si OrderingMethod n'a pas été défini à "Manual", permet de préciser l'ordre de tri automatique des éléments de navigation.

Valeurs possibles :
- true - Trie les éléments par ordre croissant.
- false - Trie les éléments par ordre décroissant.
InheritGlobalNavigation
Cette option permet de définir l'héritage ou non de la navigation globale du site.
Valeurs possibles :
- true - Affiche les mêmes éléments de navigation que le site parent.
- false - Affiche les éléments de navigation sous le site actuel.
InheritCurrentNavigation et ShowSiblings
Il est un peu moins trivial de comprendre l'impact de ces deux options. Premièrement, il est à noter qu'elles agissent sur l'affichage de la navigation actuelle. Or, si l'on regarde l'interface utilisateur, on s'aperçoit que trois options différentes nous sont proposées :
Pour reproduire ces paramètres dans les propriétés de la feature, il va nous falloir combiner les valeurs des deux options InheritCurrentNavigation et ShowSiblings.
- InheritCurrentNavigation = true et ShowSiblings = false donnera :
- InheritCurrentNavigation = false et ShowSiblings = true donnera :

- InheritCurrentNavigation = false et ShowSiblings = false donnera :
Grâce à toutes ces propriétés de la feature "Portal Navigation Properties", vous avez la possibilité de définir précisemment la navigation de vos sites de publication personnalisés directement à sa création.
Il est à noter que vous pouvez également changer toutes ces options via le modèle objet en récupérant l'objet PublishingWeb correspondant à votre site.
using (SPSite site = new SPSite("http://localhost"))
{
using (SPWeb web = site.RootWeb)
{
PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web);
pubWeb.IncludeInGlobalNavigation = true;
pubWeb.IncludeInCurrentNavigation = true;
pubWeb.IncludeSubSitesInNavigation = true;
pubWeb.IncludePagesInNavigation = true;
pubWeb.NavigationOrderingMethod = OrderingMethod.ManualWithAutomaticPageSorting;
pubWeb.NavigationAutomaticSortingMethod = AutomaticSortingMethod.Title;
pubWeb.NavigationSortAscending = false;
pubWeb.InheritGlobalNavigation = true;
pubWeb.InheritCurrentNavigation = false;
pubWeb.NavigationShowSiblings = true;
}
}
Adrien
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :