Dans le CMS Ametys, un gabarit permet de définir les différentes parties d'une page. Pour plus d'informations, consulter la page Définition de gabarit .
Créer la feuille de style d'un gabarit Le fichier cms/skins/[skinName]/templates/[templateName]/stylesheets/template.xsl définit l'affichage du gabarit; par 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"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="template">
<html>
<body>
<h1>Mon joli gabarit</h1>
<zone name="default" level="2"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet> <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="template">
<html>
<body>
<h1>Mon joli gabarit</h1>
<zone name="default" level="2"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet> Voir le code
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="template">
<html>
<body>
<h1>Mon joli gabarit</h1>
<zone name="default" level="2"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet> <zone> définit une zone identifiée par son nom, qui correspond à l'identifiant défini dans le fichier cms/skins/[skinName]/templates/[templateName]/template.xml l'attribut "level " définit les niveaux de titres du contenu qui sera inséré dans la zone : dans cet exemple, le titre du contenu sera affiché avec une balise <h2>. Le corps du contenu peut contenir jusqu'à 3 niveaux de titre : h3, h4 et h5. Ajouter des attributs à la zone (à partir de Ametys 4.3.3+) Pour ajouter des attributs au <div> généré, définissez les attributs à ajouter sur un sous-élément <body>. Par exemple :
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<zone name="right" level="1">
<body data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre"/>
</zone> <zone name="right" level="1">
<body data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre"/>
</zone>
<zone name="right" level="1">
<body data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre"/>
</zone> Le HTML généré sera:
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<div id="ametys-cms-zone-right" data-ametys-zone="right" data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre">
</div> <div id="ametys-cms-zone-right" data-ametys-zone="right" data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre">
</div>
<div id="ametys-cms-zone-right" data-ametys-zone="right" data-ametys-mobile-tab="true" data-ametys-mobile-tab-text="Titre">
</div> Pour identifier une zone (dans une règle css par exemple), il est préférable à partir de Ametys 4.3.3+ de s'appuyer sur l'attribut data-ametys-zone plutôt que l'identifiant du <div>
Fichiers XSL communs Certaines portions de gabarit sont définies dans des feuilles de styles communes et profitent aussi bien aux gabarits de page qu'à la définition de vues de contenus et de services. Ces portions de gabarits sont également utilisées par le CMS (la déclaration des feuilles de style CSS dans l'entête du document HTML par exemple), il est donc nécessaire de leur donner le même nom.
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<xsl:template name="head">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title><xsl:call-template name="get-title"/></title>
<xsl:call-template name="meta" />
<xsl:call-template name="og-meta" />
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
<xsl:call-template name="common-rss" />
<xsl:call-template name="additionnal-rss" />
<xsl:call-template name="common-script" />
<xsl:call-template name="additionnal-script" />
<!-- Search -->
<xsl:call-template name="search-head"/>
<xsl:call-template name="google-analytics"/>
</head>
</xsl:template> <xsl:template name="head">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title><xsl:call-template name="get-title"/></title>
<xsl:call-template name="meta" />
<xsl:call-template name="og-meta" />
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
<xsl:call-template name="common-rss" />
<xsl:call-template name="additionnal-rss" />
<xsl:call-template name="common-script" />
<xsl:call-template name="additionnal-script" />
<!-- Search -->
<xsl:call-template name="search-head"/>
<xsl:call-template name="google-analytics"/>
</head>
</xsl:template> Voir le code
<xsl:template name="head">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title><xsl:call-template name="get-title"/></title>
<xsl:call-template name="meta" />
<xsl:call-template name="og-meta" />
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
<xsl:call-template name="common-rss" />
<xsl:call-template name="additionnal-rss" />
<xsl:call-template name="common-script" />
<xsl:call-template name="additionnal-script" />
<!-- Search -->
<xsl:call-template name="search-head"/>
<xsl:call-template name="google-analytics"/>
</head>
</xsl:template> "meta " génère les métadonnées des pages HTML "common-css " génère tous les liens des CSS communes "additional-css " est redéfini dans chaque gabarit pour inclure les CSS spécifiques au gabarit Exemple d'un fichier template.xsl faisant appel à ces fichiers communs :
Oups ! La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<xsl:template name="template">
<html>
<head>
<xsl:call-template name="meta" />
<title>
<xsl:if test="/cms/page" ><xsl:value-of select="/cms/page/@title" /> - </xsl:if><i18n:text i18n:key="SKIN_HOMEPAGE_TITLE" i18n:catalogue="skin.{$skin}"/>
</title>
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
</head>
<body>
<xsl:call-template name="main-navigation"/>
<xsl:call-template name="banner"/>
<div id="wrapper">
<div id="content">
<xsl:call-template name="content-template"/>
</div>
</div>
<xsl:call-template name="footer"/>
</body>
</html>
</xsl:template> <xsl:template name="template">
<html>
<head>
<xsl:call-template name="meta" />
<title>
<xsl:if test="/cms/page" ><xsl:value-of select="/cms/page/@title" /> - </xsl:if><i18n:text i18n:key="SKIN_HOMEPAGE_TITLE" i18n:catalogue="skin.{$skin}"/>
</title>
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
</head>
<body>
<xsl:call-template name="main-navigation"/>
<xsl:call-template name="banner"/>
<div id="wrapper">
<div id="content">
<xsl:call-template name="content-template"/>
</div>
</div>
<xsl:call-template name="footer"/>
</body>
</html>
</xsl:template> Voir le code
<xsl:template name="template">
<html>
<head>
<xsl:call-template name="meta" />
<title>
<xsl:if test="/cms/page" ><xsl:value-of select="/cms/page/@title" /> - </xsl:if><i18n:text i18n:key="SKIN_HOMEPAGE_TITLE" i18n:catalogue="skin.{$skin}"/>
</title>
<xsl:call-template name="common-css" />
<xsl:call-template name="additionnal-css" />
</head>
<body>
<xsl:call-template name="main-navigation"/>
<xsl:call-template name="banner"/>
<div id="wrapper">
<div id="content">
<xsl:call-template name="content-template"/>
</div>
</div>
<xsl:call-template name="footer"/>
</body>
</html>
</xsl:template> Surcharger les templates utiles Le fichier template-default.xsl du noyau comporte des templates très utiles. Ils sont facilement surchargeables dans les template XSL des gabarits.
Pour plus d'information, consulter la page Ecriture d'un gabarit