ForgeCMS
fr

CMS

Pages, layouts, navigation, variables et redirections dans le CMS de Total.js

CMS · cms@8071e48 cmspageslayoutsnavigationredirectsvariablessitemap

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 url vide, le CMS en fabrique une à partir du nom : Hello World devient /hello-world/, et sous une page parente l’adresse commence par celle du parent.
  • Le site public sert une page quand son url est égale à l’adresse demandée, qu’elle n’est pas disabled et que son language, s’il est défini, est égal à la langue de la requête.
  • La réponse reçoit <title> (le title, ou le name, 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 auth ne sont servies qu’à un visiteur connecté. Le CMS demande à votre code qui est le visiteur : définissez FUNC.auth = function($) { ... } (par exemple dans un fichier de definitions/) et appelez $.success(user). Sans cette fonction, tout le monde est anonyme et une page auth répond 404.
  • Une page désactivée, une adresse inconnue et une page d’une autre langue répondent 404. Le sitemap /sitemap.xml liste 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.

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.