ForgeCMS
pl

CMS

Strony, layouty, nawigacja, zmienne i przekierowania w CMS Total.js

CMS · cms@8071e48 cmspageslayoutsnavigationredirectsvariablessitemap

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 url puste, CMS utworzy go z nazwy: Hello World zamienia się w /hello-world/, a pod stroną nadrzędną adres zaczyna się od adresu rodzica.
  • Witryna publiczna serwuje stronę, gdy jej url jest równy żądanemu adresowi, nie jest disabled, a jej language, jeśli ustawiony, jest równy językowi żądania.
  • Odpowiedź dostaje <title> (title lub name, 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 auth są serwowane tylko zalogowanemu odwiedzającemu. CMS pyta Twój kod, kim jest odwiedzający: zdefiniuj FUNC.auth = function($) { ... } (na przykład w pliku w definitions/) i wywołaj $.success(user). Bez tej funkcji wszyscy są anonimowi, a strona auth odpowiada 404.
  • Wyłączona strona, nieznany adres i strona w innym języku odpowiadają 404. Mapa witryny /sitemap.xml wymienia 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.