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

Manuel de paramétrage et d'intégration