In CMS Ametys , a template is used to define the different parts of a page. For more information, see Template definition .
Creating a template style sheet The file cms/skins/[skinName]/templates/[templateName]/stylesheets/template.xsl file defines the template display; for example :
Oops! Copy to clipboard failed. Open the code and copy it manually.<?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. Add zone attributes (from 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 :
Oops! Copy to clipboard failed. Open the code and copy it manually.<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> The HTML generated will be:
Oops! Copy to clipboard failed. Open the code and copy it manually.<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>
Common XSL files Some template sections are defined in common style sheets, and are used for page templates as well as for the definition of content and service views. These template sections are also used by CMS (the declaration of CSS style sheets in the HTML document header, for example), so it is necessary to give them the same name.
Oops! Copy to clipboard failed. Open the code and copy it manually.<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 " generates page metadata HTML "common-css " generates all links to CSS common"additional-css " is redefined in each template to include template-specific CSS .Example of a template file.xsl using these common files:
Oops! Copy to clipboard failed. Open the code and copy it manually.<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> Overloading useful templates The template-default.xsl file contains some very useful templates. They can be easily overloaded in templates XSL .
For more information, see Template writing .