Pagine, layout, navigazione, variabili e reindirizzamenti nel CMS di Total.js
Il CMS conserva l’HTML di ogni layout e pagina come file e i loro dati (indirizzo, titolo, layout...) nei metadati del sito. Una richiesta al sito pubblico trova una pagina dal suo indirizzo e la renderizza dentro il suo layout.
Layout
Un layout è un documento HTML completo. L’elemento con id="CMS" segna il punto in cui va il contenuto della pagina:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<header>$SITE</header>
<div id="CMS"></div>
<footer>@{year}</footer>
</body>
</html>Layouts/save riceve name, icon, color, html e un elenco di scripts che vengono aggiunti a ogni pagina del layout. Nell’HTML, $NAME è sostituito dalla variabile con quel nome (vedi sotto) e @{year} dall’anno corrente.
Pagine
Una pagina ha un name, un layoutid (obbligatorio), un indirizzo url e, facoltativi, title, description, keywords, language, parentid, icon, color e i flag disabled, auth, pinned e nocache. Il suo HTML (salvato con pages_save_html) è ciò che va dentro l’elemento id="CMS".
- Se lasci
urlvuoto, il CMS ne crea uno dal nome:Hello Worlddiventa/hello-world/, e sotto una pagina padre l’indirizzo inizia con quello del padre. - Il sito pubblico serve una pagina quando il suo
urlè uguale all’indirizzo richiesto, non èdisablede il suolanguage, se impostato, è uguale alla lingua della richiesta. - La risposta riceve
<title>(iltitle, o ilname, seguito dal nome del sito per ogni pagina tranne/), la descrizione e le parole chiave, uno script che conta le visite (/visitors.js) e lo stile dei widget usati dalla pagina. - Le pagine
authsono servite solo a un visitatore con accesso. Il CMS chiede al tuo codice chi è il visitatore: definisciFUNC.auth = function($) { ... }(per esempio in un file didefinitions/) e chiama$.success(user). Senza quella funzione tutti sono anonimi e una paginaauthrisponde 404. - Una pagina disattivata, un indirizzo sconosciuto e una pagina di un’altra lingua rispondono 404. La sitemap
/sitemap.xmlelenca le pagine che non sono disattivate.
Variabili
Il plugin Variables conserva un elenco di coppie NAME: value (Variables|save con vars). Ogni $NAME in un layout o in una pagina diventa il suo valore quando la pagina viene servita, utile per un telefono, il nome di un’azienda o un link che compare in molti punti. Un $NAME sconosciuto resta com’è scritto.
Navigazione
Una navigazione è un menu descritto nell’admin (un nome e un albero di link con name, url, title, icon, color, target, hidden, highlight e children) e disegnato dal tuo layout con un modello scritto in Tangular. Metti uno script nel 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>Quando il layout viene salvato, viene creata una navigazione chiamata main se non esiste; poi modifica i suoi link nel plugin Navigazione. Nel modello, value.children è l’elenco dei link visibili e value.url l’indirizzo servito. Dai allo script un name; con il solo id il compilatore lo accetta ma il salvataggio del layout non risponde.
Esiste anche <script type="text/breadcrumb"> per il percorso delle pagine padre.
Reindirizzamenti
Un reindirizzamento ha un url, un target e permanent. Il sito pubblico controlla i reindirizzamenti prima delle pagine: /old/ ha risposto con la pagina di /about/ quando la sua destinazione era /about/.
Cache
Le pagine compilate sono messe in cache; salvare una pagina, un layout, un widget o una variabile svuota ciò che ne dipende, e un servizio che gira ogni due minuti svuota anche le viste compilate.