Pages, layouts, navigation, variables et redirections dans le CMS de Total.js
Le CMS conserve le HTML de chaque layout et de chaque page sous forme de fichier, et leurs données (adresse, titre, layout...) dans les métadonnées du site. Une requête vers le site public trouve une page par son adresse et la rend à l’intérieur de son layout.
Layouts
Un layout est un document HTML complet. L’élément avec id="CMS" marque l’endroit où va le contenu de la page :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<header>$SITE</header>
<div id="CMS"></div>
<footer>@{year}</footer>
</body>
</html>Layouts/save prend name, icon, color, html et une liste de scripts ajoutés à chaque page du layout. Dans le HTML, $NAME est remplacé par la variable de ce nom (voir plus bas) et @{year} par l’année en cours.
Pages
Une page a un name, un layoutid (obligatoire), une adresse url et, facultativement, title, description, keywords, language, parentid, icon, color et les indicateurs disabled, auth, pinned et nocache. Son HTML (enregistré avec pages_save_html) est ce qui va dans l’élément id="CMS".
- Si vous laissez
urlvide, le CMS en fabrique une à partir du nom :Hello Worlddevient/hello-world/, et sous une page parente l’adresse commence par celle du parent. - Le site public sert une page quand son
urlest égale à l’adresse demandée, qu’elle n’est pasdisabledet que sonlanguage, s’il est défini, est égal à la langue de la requête. - La réponse reçoit
<title>(letitle, ou lename, suivi du nom du site pour toutes les pages sauf/), la description et les mots-clés, un script qui compte les visites (/visitors.js) et le style des widgets que la page utilise. - Les pages
authne sont servies qu’à un visiteur connecté. Le CMS demande à votre code qui est le visiteur : définissezFUNC.auth = function($) { ... }(par exemple dans un fichier dedefinitions/) et appelez$.success(user). Sans cette fonction, tout le monde est anonyme et une pageauthrépond 404. - Une page désactivée, une adresse inconnue et une page d’une autre langue répondent 404. Le sitemap
/sitemap.xmlliste les pages qui ne sont pas désactivées.
Variables
Le plugin Variables conserve une liste de paires NAME: value (Variables|save avec vars). Tout $NAME d’un layout ou d’une page devient sa valeur quand la page est servie, ce qui est utile pour un numéro de téléphone, un nom d’entreprise ou un lien qui apparaît à de nombreux endroits. Un $NAME inconnu reste tel qu’il est écrit.
Navigation
Une navigation est un menu décrit dans l’admin (un nom et un arbre de liens avec name, url, title, icon, color, target, hidden, highlight et children) et dessiné par votre layout avec un modèle écrit en Tangular. Mettez un script dans le layout :
<nav>
<script type="text/navigation" name="main">
{{ foreach m in value.children }}
<a href="{{ m.url }}"{{ if m.url === value.url }} class="on"{{ fi }}>{{ m.name }}</a>
{{ end }}
</script>
</nav>Quand le layout est enregistré, une navigation appelée main est créée si elle n’existe pas ; modifiez ensuite ses liens dans le plugin Navigation. Dans le modèle, value.children est la liste des liens visibles et value.url l’adresse servie. Donnez un name au script ; avec seulement un id, le compilateur l’accepte mais l’enregistrement du layout ne répond pas.
Il existe aussi <script type="text/breadcrumb"> pour le fil des pages parentes.
Redirections
Une redirection a une url, une target et permanent. Le site public vérifie les redirections avant les pages : /old/ a répondu avec la page de /about/ quand sa cible était /about/.
Cache
Les pages compilées sont mises en cache ; enregistrer une page, un layout, un widget ou une variable vide ce qui en dépend, et un service qui s’exécute toutes les deux minutes vide aussi les vues compilées.