Personnalisation du WebPart Sommaire

Vous le savez peut être l’annuaire de site n’est plus une fonctionnalité de SharePoint 2010. Même si le modèle de site est activable (celui-ci est toujours sur SharePoint 2010 mais il est masqué), son seul but est de garantir une compatibilité avec la version 2007.

Je vous propose donc dans cet article d’utiliser le composant WebPart Sommaire et de le personnaliser en lieu et place de cet annuaire.

Fonctionnement natif du composant WebPart Sommaire

Par défaut ce composant affiche l’ensemble des éléments de la navigation : sous sites, pages, liens vers les bilbiothèques, listes, liens divers.

En gros toute la navigation (menu de lancement rapide) de la collection de sites peut être affichée via ce WebPart.

Dans le cas de l’annuaire de site, seuls les liens vers les sites nous intéressent. Nous souhaitons donc ne pas afficher toutes les pages faisant référence au dossier _layouts, forms, etc…

Nous allons donc devoir modifier la feuille de transformation XSL afin  de filtrer les éléments non souhaités qui sont :

  • · Les liens Accueil,
  • · Les liens utilisant des pages du dossier _layouts (Bibliothèques, Listes)

Modification de la feuille de transformation

Ouvrir SharePoint Designer et rendez-vous dans la bibliothèque de styles de votre collection de site, puis rentrez dans le dossier XSL Style Sheets.

Editez le fichier LevelStyle.xsl

Créez 2 nouveaux templates (pour le niveau 1 et pour le niveau 2)

<xsl:template name= »IRSN-Niveau-1″ match= »Level[@LevelTemplate=’XXXX-Niveau-1′] »>

<xsl:variable name= »LevelIndent » select= »(number(@LevelNumber)-number(1))*number(14)+number(4) »></xsl:variable>

<xsl:variable name= »LeafIndent » select= »$LevelIndent+6″></xsl:variable>

<xsl:variable name= »LeafIndentWithBullet » select= »$LevelIndent+14″></xsl:variable>

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) and not(contains(@Path,’Lists’)) »>

<li>

<div style= »margin-{$Alignment}:{$LevelIndent}px; »>

<div>

<span>

<xsl:choose>

<xsl:when test=’string-length(@Path) > 0′>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</xsl:when>

<xsl:otherwise>

<xsl:value-of select= »@Title »/>

</xsl:otherwise>

</xsl:choose>

</span>

</div>

<xsl:if test= »count(child::Item) > 0″>

<ul>

<xsl:for-each select= »child::Item »>

<li>

<span>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</span>

</li>

</xsl:for-each>

</ul>

</xsl:if>

</div>

</li>

</xsl:when>

</xsl:choose>

</xsl:template>

Et

<xsl:template name= »IRSN-Niveau-2″ match= »Level[@LevelTemplate=’XXXX-Niveau-2′] »>

<xsl:variable name= »LevelIndent » select= »(number(@LevelNumber)-number(1))*number(14)+number(4) »></xsl:variable>

<xsl:variable name= »LeafIndent » select= »$LevelIndent+6″></xsl:variable>

<xsl:variable name= »LeafIndentWithBullet » select= »$LevelIndent+14″></xsl:variable>

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) and not(contains(@Path,’Lists’)) »>

<li>

<div style= »margin-{$Alignment}:{$LevelIndent}px; »>

<div>

<div>

<span>

<xsl:choose>

<xsl:when test=’string-length(@Path) > 0′>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</xsl:when>

</xsl:choose>

</span>

</div>

<div>

<xsl:value-of select= »@Description » />

</div>

</div>

<xsl:if test= »count(child::Item) > 0″>

<ul>

<xsl:for-each select= »child::Item »>

<li>

<div>

<span>

<a href= »{cmswrt:EnsureIsAllowedProtocol(string(@Path))} »>

<xsl:value-of select= »@Title »/>

</a>

</span>

</div>

<div>

<xsl:value-of select= »@Description » />

</div>

</li>

</xsl:for-each>

</ul>

</xsl:if>

</div>

</li>

</xsl:when>

</xsl:choose>

</xsl:template>

Ces templates sont en très grandes parties issus de modèle déjà existant, ce qui change c’est la condition de départ :

<xsl:choose>

<xsl:when test= »not(contains(@Path,’_layouts’)) and not(contains(@Path,’Forms’)) and not(contains(@Title,’Accueil’)) »>

Nous affichons uniquement les éléments qui n’utilisent pas les mots clés « _layouts », « Forms » et « Accueil »

Configurer ensuite le composant WebPart pour qu’il utilise ces 2 templates.

Voilà le résultat 🙂

Publicités
%d blogueurs aiment cette page :