Strony, layouty, nawigacja, zmienne i przekierowania w CMS Total.js
CMS przechowuje HTML każdego layoutu i strony jako plik, a ich dane (adres, tytuł, layout...) w metadanych witryny. Żądanie do witryny publicznej znajduje stronę po adresie i renderuje ją wewnątrz jej layoutu.
Layouty
Layout to pełny dokument HTML. Element z id="CMS" oznacza miejsce, w którym trafia treść strony:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<header>$SITE</header>
<div id="CMS"></div>
<footer>@{year}</footer>
</body>
</html>Layouts/save przyjmuje name, icon, color, html i listę scripts, które są dodawane do każdej strony layoutu. W HTML $NAME jest zastępowane zmienną o tej nazwie (zobacz niżej), a @{year} bieżącym rokiem.
Strony
Strona ma name, layoutid (wymagane), adres url i opcjonalnie title, description, keywords, language, parentid, icon, color oraz flagi disabled, auth, pinned i nocache. Jej HTML (zapisany przez pages_save_html) trafia do elementu id="CMS".
- Jeśli zostawisz
urlpuste, CMS utworzy go z nazwy:Hello Worldzamienia się w/hello-world/, a pod stroną nadrzędną adres zaczyna się od adresu rodzica. - Witryna publiczna serwuje stronę, gdy jej
urljest równy żądanemu adresowi, nie jestdisabled, a jejlanguage, jeśli ustawiony, jest równy językowi żądania. - Odpowiedź dostaje
<title>(titlelubname, a po nim nazwę witryny dla każdej strony oprócz/), opis i słowa kluczowe, skrypt zliczający odwiedziny (/visitors.js) oraz styl widżetów używanych przez stronę. - Strony
authsą serwowane tylko zalogowanemu odwiedzającemu. CMS pyta Twój kod, kim jest odwiedzający: zdefiniujFUNC.auth = function($) { ... }(na przykład w pliku wdefinitions/) i wywołaj$.success(user). Bez tej funkcji wszyscy są anonimowi, a stronaauthodpowiada 404. - Wyłączona strona, nieznany adres i strona w innym języku odpowiadają 404. Mapa witryny
/sitemap.xmlwymienia strony, które nie są wyłączone.
Zmienne
Wtyczka Variables przechowuje listę par NAME: value (Variables|save z vars). Każde $NAME w layoucie lub stronie staje się swoją wartością, gdy strona jest serwowana, co przydaje się dla telefonu, nazwy firmy lub odnośnika występującego w wielu miejscach. Nieznane $NAME pozostaje tak, jak zapisano.
Nawigacja
Nawigacja to menu opisane w administracji (nazwa i drzewo odnośników z name, url, title, icon, color, target, hidden, highlight i children) i rysowane przez Twój layout szablonem napisanym w Tangular. Umieść skrypt w layoucie:
<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>Po zapisaniu layoutu tworzona jest nawigacja o nazwie main, jeśli nie istnieje; następnie edytuj jej odnośniki we wtyczce Nawigacja. W szablonie value.children to lista widocznych odnośników, a value.url serwowany adres. Nadaj skryptowi name; z samym id kompilator go akceptuje, ale zapis layoutu nie odpowiada.
Istnieje też <script type="text/breadcrumb"> dla ścieżki stron nadrzędnych.
Przekierowania
Przekierowanie ma url, target i permanent. Witryna publiczna sprawdza przekierowania przed stronami: /old/ odpowiedziało stroną /about/, gdy jego celem było /about/.
Pamięć podręczna
Skompilowane strony są przechowywane w pamięci podręcznej; zapis strony, layoutu, widżetu lub zmiennej czyści to, co od nich zależy, a usługa uruchamiana co dwie minuty czyści też skompilowane widoki.