Les Input Data sont des données dynamiques apportées selon l'environnement de la page et de l'utilisateur. Elles permettent de construire les parties communes à toutes les pages qui ne contiennent pas les mêmes données selon l'environnement.

Plan du site : sitemap

Cette partie contient l'ensemble des données décrivant le plan du site jusqu'à une profondeur de 3 pages.

S'y trouve notamment les étiquettes de page, le chemin de la page actuelle (grâce à l'attribut sitemap:in-path) et toutes les données pour faire un lien vers une autre page du plan du site dans la limite d'une profondeur de 3 niveaux.

<inputData>  
 <sitemap sitemap:site="www" sitemap:lang="fr">  
 <page sitemap:id="page://..." sitemap:name="index" sitemap:title="Accueil" sitemap:long-title="Accueil" sitemap:path="index" sitemap:type="CONTAINER" sitemap:container="true" sitemap:in-path="true" sitemap:current="true" site="www" sitemap="fr"/>  
 <page sitemap:id="page://..." sitemap:name="rubrique-1" sitemap:title="Rubrique 1" sitemap:long-title="Rubrique 1" sitemap:path="rubrique-1" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr" PLUGIN_TAGS_SECTION="empty">  
 <page sitemap:id="page://..." sitemap:name="sous-rubrique-1" sitemap:title="Sous rubrique 1" sitemap:long-title="Sous rubrique 1" sitemap:path="rubrique-1/sous-rubrique-1" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr" PLUGIN_TAGS_SUBSECTION="empty">  
 <page sitemap:id="page://..." sitemap:name="sous-sous-rubrique-1" sitemap:title="Sous sous rubrique 1" sitemap:long-title="Sous sous rubrique 1" sitemap:path="rubrique-1/sous-rubrique-1/sous-sous-rubrique-1" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr"/>  
 <page sitemap:id="page://..." sitemap:name="sous-sous-rubrique-2" sitemap:title="Sous sous rubrique 2" sitemap:long-title="Sous sous rubrique 2" sitemap:path="rubrique-1/sous-rubrique-1/sous-sous-rubrique-2" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr"/>  
 </page>  
 <page sitemap:id="page://..." sitemap:name="sous-rubrique-2" sitemap:title="Sous rubrique 2" sitemap:long-title="Sous rubrique 2" sitemap:path="rubrique-1/sous-rubrique-2" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr" PLUGIN_TAGS_SUBSECTION="empty"/>  
 </page>  
 </sitemap>  
</inputData>  

Sur chaque élément <page> on retrouve les attributs XML suivants :

sitemap:idIdentifiant de la page
sitemap:nameNom de la page
sitemap:titleTitre de la page
sitemap:long-titleTitre long de la page
sitemap:pathUrl de la page dans le plan du site
sitemap:type

Type de la page:

  • CONTAINER (page avec zones de contenus et/ou services)
  • LINK (page de redirection)
  • NODE (page vide)
sitemap:in-pathPrésent et égal à "true" est une page parente de la page courante ou la page courante
sitemap:currentPrésent et égal à "true" si la page est la page courante (actuellement affichée)
sitemap:containerPrésent et égal à "true" si la page est une page de type CONTAINER
sitemap:linkUrl de la page de redirection.
Présent uniquement si la page est de type LINK
sitemap:link-type

Type de redirection:

  • WEB: redirection vers une page web externe
  • PAGE: redirection vers une page du CMS

Présent uniquement si la page est de type LINK

sitemap:restrictedPrésent et égal à "true" si la page est une page à accès limité
sitemap:invisiblePrésent et égal à  "true" si la page est invisible dans les éléments de navigation.
(A partir de la version v3.8.1 seulement)

Ces données sont utilisées pour construire les menus, fils d'ariane, ...

XML

<inputData>  
 <sitemap xmlns:sitemap="http://www.ametys.org/inputdata/3.0" sitemap:site="www" sitemap:lang="fr">  
 <page sitemap:id="page://..." sitemap:name="index" sitemap:title="Accueil" sitemap:long-title="Accueil" sitemap:path="index" sitemap:type="CONTAINER" sitemap:container="true" site="www" sitemap="fr"/>  
 <page sitemap:id="page://..." sitemap:name="fonctionnalites-avancees" sitemap:title="Fonctionnalités clés" sitemap:long-title="Fonctionnalités clés" sitemap:path="fonctionnalites-avancees" sitemap:type="CONTAINER" sitemap:container="true" sitemap:in-path="true" sitemap:current="true" site="www" sitemap="fr"/>  
 ...  
 </page>  
 ...  
 </sitemap>  
</inputData>  

XSL

<xsl:template name="bread-crumb">  
 <ul>  
 <xsl:if test="/cms/inputData/sitemap/page[@sitemap:name = 'index']">  
 <li class="first">  
 <a href="{$site-uri-prefix}/{$lang}/index.html">  
 <xsl:value-of select="/cms/inputData/sitemap/page[@sitemap:name ='index']/@sitemap:title" />  
 </a>  
 </li>  
 </xsl:if>  
 <xsl:for-each select="/cms/inputData/sitemap//page[not(@sitemap:path = 'index') and @sitemap:in-path = 'true']">  
 <li>  
 <xsl:text> > </xsl:text>  
 <a href="{$site-uri-prefix}/{$lang}/{@sitemap:path}.html"><xsl:value-of select="@sitemap:title" /></a>  
 </li>  
 </xsl:for-each>  
 </ul>  
</xsl:template>  

Configuration

A partir de la version 4.2, il est possible de configurer le SitemapInputData en ajoutant le fichier de configuration skins/[SKIN]/conf/sitemap.xml dans votre charte graphique.

Ce fichier permet de surcharger les 2 options suivantes :

  • initial-depth : profondeur max depuis la racine du plan du site. 2 par defaut
  • descendant-depth : profondeur max sous la page courante. 1 par defaut.

Exemple:

<?xml version="1.0" encoding="UTF-8"?> 
<sitemap> 
    <initial-depth>3</initial-depth> 
    <descendant-depth>3</descendant-depth> 
</sitemap> 

Filtres : Model et PageModel

Des filtres définis dans le fichier cms/skins/[skinName]/templates/[templateName]/filters/default.xml permettent également de récupérer des données dynamiques.

Voici un exemple :

<?xml version="1.0" encoding="UTF-8"?>  
<filters>  
    <filter id="focus" target="content">  
        <content-types>  
            <type id="org.ametys.web.default.Content.article"/>  
        </content-types>  
        <tags>  
            <tag key="FOCUS"/>  
        </tags>  
        <view>abstract</view>  
        <context type="current-site"/>  
        <max-result>5</max-result>  
    </filter>  
</filters>  

Si l'attribut target est égal à content, alors le filtre renvoie les contenus correspondants dans la balise Model. S'il est égal à page, alors le filtre renvoie les pages correspondantes dans la balise PageModel.

L'id du filtre est utilisé pour créer la balise racine de celui-ci dans le XML généré.

La définition d'un filtre dans default.xml est proche de celle définie dans plugin.xml (voir Définir un filtre statique).

L'inputdata org.ametys.web.tags.inputdata.FilteredContentsInputData lis ce fichier pour générer du XML de la forme suivante :

<inputData>  
     <Model>  
         <focus>  
            <content name="" id="defaultContent://">  
                 <html>  
                     <head><!-- Here head of the content --></head>  
                     <body>  
                          <!-- Here HTML view of the content -->  
                     </body>  
                 </html>  
            </content>  
  
  
            <content name="" id="defaultContent://">  
                 <html>  
                     <head><!-- Here head of the content --> </head>  
                     <body>  
                          <!-- Here HTML view of the content -->  
                     </body>  
                 </html>  
            </content>  
         </focus>  
     </Model>  
</inputData>  

Exemple d'utilisation
Cela est utile pour afficher une liste de liens vers les pages étiquetées "Accès direct" :

XML

<?xml version="1.0" encoding="UTF-8"?>  
<filters>  
 <filter id="acces-directs" target="page">  
 <context type="current-site" lang="current" />  
 <tags>  
 <tag key="DIRECTACCESS" />  
 </tags>  
 <max-result>10</max-result>  
 </filter>  
</filters>  

XSL

<ul>  
 <xsl:for-each select="/cms/inputData/PageModel/acces-directs/page">  
 <li>  
 <a href="{$site-uri-prefix}/{$lang}/{@path}.html>  
 <xsl:value-of select="@title" />  
 </a>  
 </li>  
 </xsl:for-each>  
</ul>  

Input data personnalisés

Il est possible d'ajouter des Input Data personnalisés. Par exemple, les Input Data peuvent servir à remonter des informations sur les préférences utilisateur.

Retour en haut