# Oldalak, elrendezések, navigáció, változók és átirányítások a Total.js CMS-ben

> Hogyan alakítja a CMS az elrendezést és az oldalt nyilvános címmé: a CMS azonosítójú elem, az oldal mezői, a változók, a Tangularral írt navigációs szkriptek, az átirányítások, az oldaltérkép és az, hogy mely oldalak láthatók.

Framework: cms
Product: CMS (cms@8071e48)
Language: hu
Content-SHA256: 3d0bfc44613f31b66d417ac1037b9b7163c45601f459328fef4f0917fed76372
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

A CMS minden elrendezés és oldal HTML-jét fájlként tárolja, az adataikat (cím, cím, elrendezés...) pedig az oldal metaadataiban. A nyilvános oldalra érkező kérés cím alapján megkeresi az oldalt, és az elrendezésén belül jeleníti meg.

## Elrendezések

Az **elrendezés** egy teljes HTML dokumentum. Az `id="CMS"` elem jelöli azt a helyet, ahová az oldal tartalma kerül:

```html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<header>$SITE</header>
	<div id="CMS"></div>
	<footer>@{year}</footer>
</body>
</html>
```

A `Layouts/save` a `name`, `icon`, `color`, `html` mezőket és a `scripts` listát fogadja, amelyek az elrendezés minden oldalához hozzáadódnak. A HTML-ben a `$NAME` helyére az ilyen nevű **változó** kerül (lásd lent), a `@{year}` helyére pedig az aktuális év.

## Oldalak

Az **oldalnak** van `name`, `layoutid` (kötelező), `url` címe és opcionálisan `title`, `description`, `keywords`, `language`, `parentid`, `icon`, `color` mezője, valamint `disabled`, `auth`, `pinned` és `nocache` jelzője. A HTML-je (a `pages_save_html` hívással mentve) kerül az `id="CMS"` elembe.

- Ha az `url` üres marad, a CMS a névből készít egyet: a `Hello World` `/hello-world/` lesz, szülőoldal alatt pedig a cím a szülő címével kezdődik.
- A nyilvános oldal akkor szolgál ki egy oldalt, ha az `url` értéke megegyezik a kért címmel, nincs `disabled`, és a `language` értéke, ha meg van adva, megegyezik a kérés nyelvével.
- A válasz megkapja a `<title>` címkét (a `title`, vagy a `name`, utána az oldal neve minden oldalon a `/` kivételével), a leírást és a kulcsszavakat, egy szkriptet, amely számolja a látogatásokat (`/visitors.js`), és az oldal által használt widgetek stílusát.
- `auth` oldalakat csak bejelentkezett látogatónak szolgál ki. A CMS a kódodtól kérdezi meg, ki a látogató: definiáld a `FUNC.auth = function($) { ... }` függvényt (például a `definitions/` egy fájljában), és hívd a `$.success(user)` metódust. E függvény nélkül mindenki névtelen, és az `auth` oldal 404-et ad.
- A letiltott oldal, az ismeretlen cím és egy másik nyelvű oldal 404-et ad. A `/sitemap.xml` oldaltérkép a nem letiltott oldalakat listázza.

## Változók

A *Variables* bővítmény `NAME: value` párok listáját tárolja (`Variables|save` a `vars` mezővel). Az elrendezésben vagy oldalon lévő minden `$NAME` az értékére cserélődik, amikor az oldalt kiszolgálja, ami telefonszámhoz, cégnévhez vagy sok helyen megjelenő hivatkozáshoz hasznos. Az ismeretlen `$NAME` úgy marad, ahogy le van írva.

## Navigáció

A navigáció az adminban leírt menü (egy név és hivatkozások fája `name`, `url`, `title`, `icon`, `color`, `target`, `hidden`, `highlight` és `children` mezőkkel), amelyet az elrendezésed Tangularral írt sablonnal rajzol ki. Tegyél egy szkriptet az elrendezésbe:

```html
<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>
```

Az elrendezés mentésekor létrejön egy `main` nevű navigáció, ha még nincs; ezután a hivatkozásait a *Navigáció* bővítményben szerkesztheted. A sablonban a `value.children` a látható hivatkozások listája, a `value.url` pedig a kiszolgált cím. Adj a szkriptnek `name` értéket; csak `id`-val a fordító elfogadja, de az elrendezés mentése nem ad választ.

Létezik `<script type="text/breadcrumb">` is a szülőoldalak útvonalához.

## Átirányítások

Az átirányításnak van `url`, `target` és `permanent` mezője. A nyilvános oldal az oldalak előtt ellenőrzi az átirányításokat: a `/old/` a `/about/` oldalával válaszolt, amikor a célja `/about/` volt.

## Gyorsítótár

A lefordított oldalak gyorsítótárban vannak; egy oldal, elrendezés, widget vagy változó mentése törli a tőlük függőket, és a kétpercenként futó szolgáltatás a lefordított nézeteket is törli.
