Les XSL d'enrobage permettent d'obtenir, dans le CMS, un rendu fidèle des contenus. Toutes les balises englobantes utilisées comme sélecteurs dans les css de la charte sont copiées dans ce fichier, de telle sorte que le code HTML permettant d'afficher un contenu seul dans le CMS ait une structure semblable à celle d'un gabarit de page. Cette XSL reprend donc l'ensemble des imports, des paramètres et des templates présentes dans un gabarit, ainsi que les balises HTML permettant l'affichage du cœur de page. Les bandeau d'entête, pied de page, menu de navigation et autres éléments composant la page ne doivent pas figurer dans cette XSL.

Cette XSL d'enrobage est placée dans l'arborescence de la charte dans skins/[skinName]/stylesheets/content/_wrapper/. Elle est nommée content.xsl pour l'ensemble des types de contenus utilisés dans le site.

Si nécessaire, est possible de définir une XSL d'enrobage par type de contenu comme c'est généralement le cas pour la XSL d'enrobage de la lettre d'information qui est rarement présentée comme une page du site. Dans ce cas, elle est nommée content-org.ametys.plugins.newsletter.Content.newsletter.xsl c'est-à-dire content-[idPlugin].xsl

<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
        xmlns:sitemap="http://www.ametys.org/inputdata/sitemap/3.0"
        xmlns:xalan="http://xml.apache.org/xalan"
        xmlns:ametys="org.ametys.web.transformation.xslt.AmetysXSLTHelper"
        xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date"
        exclude-result-prefixes="sitemap ametys">

    <xsl:import href="workspace:web://stylesheets/template-default.xsl"/>
    <xsl:import href="plugin:cms://stylesheets/helper/html-hierarchy.xsl"/>
    
    <xsl:variable name="contextPath" select="ametys:uriPrefix()"/>
    <xsl:variable name="uri-prefix" select="ametys:uriPrefix()"/>
    <xsl:variable name="skin" select="ametys:skin()"/>
    <xsl:variable name="siteName" select="ametys:site()"/>
    <xsl:variable name="lang" select="ametys:lang()"/>
     
    <xsl:template match="/">
        <html>
            <head>               
                <xsl:copy-of select="/html/head/*[local-name()!='title']"/>
            </head>
            <body>
				<div class="wrapper">
					<div class="main-content">
                		<xsl:apply-templates select="html/body/node()" mode="move-hierarchy">
                    		<xsl:with-param name="level" select="2"/>
               	 		</xsl:apply-templates>
					</div>
				</div>
            </body>
        </html>
    </xsl:template> 

    <xsl:template match="*">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

Noter que le mode move-hierarchy permet de définir le premier niveau de titre du contenu. Dans cet exemple, sur le premier titre sera appliqué une balise <h2>

Retour en haut