Pagini, layout-uri, navigație, variabile și redirecționări în CMS-ul Total.js
CMS-ul păstrează HTML-ul fiecărui layout și al fiecărei pagini ca fișier, iar datele lor (adresă, titlu, layout...) în metadatele site-ului. O cerere către site-ul public găsește o pagină după adresă și o randează în layout-ul ei.
Layout-uri
Un layout este un document HTML complet. Elementul cu id="CMS" marchează locul în care intră conținutul paginii:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<header>$SITE</header>
<div id="CMS"></div>
<footer>@{year}</footer>
</body>
</html>Layouts/save primește name, icon, color, html și o listă de scripts care se adaugă fiecărei pagini a layout-ului. În HTML, $NAME este înlocuit cu variabila cu acel nume (vezi mai jos), iar @{year} cu anul curent.
Pagini
O pagină are un name, un layoutid (obligatoriu), o adresă url și, opțional, title, description, keywords, language, parentid, icon, color și indicatorii disabled, auth, pinned și nocache. HTML-ul ei (salvat cu pages_save_html) este ce intră în elementul id="CMS".
- Dacă lași
urlgol, CMS-ul face unul din nume:Hello Worlddevine/hello-world/, iar sub o pagină-părinte adresa începe cu adresa părintelui. - Site-ul public servește o pagină când
urlal ei este egal cu adresa cerută, nu estedisabled, iarlanguageal ei, dacă este setat, este egal cu limba cererii. - Răspunsul primește
<title>(titlesauname, urmat de numele site-ului la fiecare pagină în afară de/), descrierea și cuvintele-cheie, un script care numără vizitele (/visitors.js) și stilul widgeturilor folosite de pagină. - Paginile
authsunt servite doar unui vizitator autentificat. CMS-ul întreabă codul tău cine este vizitatorul: defineșteFUNC.auth = function($) { ... }(de exemplu într-un fișier dindefinitions/) și apelează$.success(user). Fără acea funcție toți sunt anonimi, iar o paginăauthrăspunde 404. - O pagină dezactivată, o adresă necunoscută și o pagină în altă limbă răspund 404. Sitemap-ul
/sitemap.xmllistează paginile care nu sunt dezactivate.
Variabile
Pluginul Variables păstrează o listă de perechi NAME: value (Variables|save cu vars). Orice $NAME dintr-un layout sau o pagină devine valoarea lui când pagina este servită, ceea ce e util pentru un telefon, numele unei companii sau un link care apare în multe locuri. Un $NAME necunoscut rămâne așa cum este scris.
Navigație
O navigație este un meniu descris în administrare (un nume și un arbore de linkuri cu name, url, title, icon, color, target, hidden, highlight și children) și desenat de layout-ul tău cu un șablon scris în Tangular. Pune un script în 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>Când layout-ul este salvat, se creează o navigație numită main dacă nu există; apoi editează linkurile ei în pluginul Navigație. În șablon, value.children este lista linkurilor vizibile, iar value.url adresa servită. Dă scriptului un name; doar cu un id compilatorul îl acceptă, dar salvarea layout-ului nu răspunde.
Există și <script type="text/breadcrumb"> pentru traseul paginilor-părinte.
Redirecționări
O redirecționare are un url, un target și permanent. Site-ul public verifică redirecționările înaintea paginilor: /old/ a răspuns cu pagina /about/ când ținta lui era /about/.
Cache
Paginile compilate sunt păstrate în cache; salvarea unei pagini, a unui layout, a unui widget sau a unei variabile golește ce depinde de ele, iar un serviciu care rulează la fiecare două minute golește și vizualizările compilate.