Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 03/03/2014 15:18:36

Francis Feytout
Guest
From: Bordeaux 3
Registered: 19/01/2012
Posts: 35

Comment détecter la profondeur d'une page sur une navigation/menu ?

Bonjour,
Mon site a la forme classique de :
index
- rubrique
- - sous rubrique
- - - fiche

Je souhaite construire une navigation qui se comporte différemment selon la page afficher.

Comment puis-je tester les 3 affichages ? 

Je pars du code ci-dessous, mais les tests valent se répercutent aussi sur les pages filles :

<xsl:variable name="cat-main-node" select="ametys:sitemap()/page[(@sitemap:in-path = 'true') and not(@PLUGIN_TAGS_INVISIBLE)]/page"/>
<xsl:template name="cat-main-nav" >
  <ul id="cat-menu" >
    <xsl:for-each select="$cat-main-node" >
<!-- rubrique -->
      <xsl:if test="ametys:sitemap()/page[@sitemap:name = 'c-a-t']">
            <li>...</li>
<!-- sous rubrique -->
      <xsl:if test="(@sitemap:in-path = 'true') and page[not(@PLUGIN_TAGS_INVISIBLE)]">
        <xsl:for-each select="page[not(@PLUGIN_TAGS_INVISIBLE)]">
            <li>...</li>
...
</xsl:template>

Offline

#2 06/03/2014 15:32:30

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,117

Re: Comment détecter la profondeur d'une page sur une navigation/menu ?

Je ne comprends pas votre code.
Vous souhaitez comprendre à quel niveau de profondeur est la page actuelle ?
Si oui ça doit ressemble à ceci...

<xsl:variable name="prodondeur" select="count(ametys:sitemap()//page[@sitemap:in-path = 'true'])"/>

A noter, pour des raisons de performances, évitez d'utilisez ametys:sitemap() dans une page alors que vous avez déjà le sitemap input data sous la main :

<xsl:variable name="prodondeur" select="count(/cms/inputData/sitemap//page[@sitemap:in-path = 'true'])"/>

Raphael Franchet
Expert Ametys

Offline

Board footer

Powered by FluxBB