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.
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<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> <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> Voir le code
<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:id Identifiant de la page sitemap:name Nom de la page sitemap:title Titre de la page sitemap:long-title Titre long de la page sitemap:path Url 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-path Présent et égal à "true" est une page parente de la page courante ou la page courante sitemap:current Présent et égal à "true" si la page est la page courante (actuellement affichée) sitemap:container Présent et égal à "true" si la page est une page de type CONTAINER sitemap:link Url 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:restricted Présent et égal à "true" si la page est une page à accès limité sitemap:invisible Pré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
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<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> <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>
<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
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<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> <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> Voir le code
<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 defautdescendant-depth : profondeur max sous la page courante. 1 par defaut.Exemple:
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<?xml version="1.0" encoding="UTF-8"?>
<sitemap>
<initial-depth>3</initial-depth>
<descendant-depth>3</descendant-depth>
</sitemap> <?xml version="1.0" encoding="UTF-8"?>
<sitemap>
<initial-depth>3</initial-depth>
<descendant-depth>3</descendant-depth>
</sitemap>
<?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 :
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<?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> <?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> Voir le code
<?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 :
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<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> <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> Voir le code
<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
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<?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> <?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>
<?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
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<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> <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>
<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.