Páginas, layouts, navegação, variáveis e redirecionamentos no CMS do Total.js
O CMS guarda o HTML de cada layout e página como um ficheiro e os seus dados (endereço, título, layout...) nos metadados do site. Um pedido ao site público encontra uma página pelo seu endereço e renderiza-a dentro do seu layout.
Layouts
Um layout é um documento HTML completo. O elemento com id="CMS" marca o lugar onde vai o conteúdo da página:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<header>$SITE</header>
<div id="CMS"></div>
<footer>@{year}</footer>
</body>
</html>Layouts/save recebe name, icon, color, html e uma lista de scripts que são acrescentados a todas as páginas do layout. No HTML, $NAME é substituído pela variável com esse nome (veja abaixo) e @{year} pelo ano atual.
Páginas
Uma página tem um name, um layoutid (obrigatório), um endereço url e, opcionalmente, title, description, keywords, language, parentid, icon, color e os indicadores disabled, auth, pinned e nocache. O seu HTML (guardado com pages_save_html) é o que vai dentro do elemento id="CMS".
- Se deixar
urlvazio, o CMS cria uma a partir do nome:Hello Worldpassa a/hello-world/, e debaixo de uma página pai o endereço começa pelo endereço do pai. - O site público serve uma página quando o seu
urlé igual ao endereço pedido, não estádisablede o seulanguage, se definido, é igual ao idioma do pedido. - A resposta recebe
<title>(otitle, ou oname, seguido do nome do site em todas as páginas exceto/), a descrição e as palavras-chave, um script que conta as visitas (/visitors.js) e o estilo dos widgets que a página usa. - As páginas
authsó são servidas a um visitante com sessão iniciada. O CMS pergunta ao seu código quem é o visitante: definaFUNC.auth = function($) { ... }(por exemplo num ficheiro dedefinitions/) e chame$.success(user). Sem essa função todos são anónimos e uma páginaauthresponde 404. - Uma página desativada, um endereço desconhecido e uma página de outro idioma respondem 404. O sitemap
/sitemap.xmllista as páginas que não estão desativadas.
Variáveis
O plugin Variables guarda uma lista de pares NAME: value (Variables|save com vars). Qualquer $NAME num layout ou numa página passa a ser o seu valor quando a página é servida, o que serve para um telefone, o nome de uma empresa ou uma ligação que aparece em muitos sítios. Um $NAME desconhecido fica como está escrito.
Navegação
Uma navegação é um menu descrito no admin (um nome e uma árvore de ligações com name, url, title, icon, color, target, hidden, highlight e children) e desenhado pelo seu layout com um modelo escrito em Tangular. Ponha um script no 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 o layout é guardado, é criada uma navegação chamada main se não existir; depois edite as suas ligações no plugin Navegação. No modelo, value.children é a lista de ligações visíveis e value.url o endereço que está a ser servido. Dê um name ao script; com apenas um id o compilador aceita-o, mas guardar o layout não responde.
Existe também <script type="text/breadcrumb"> para o caminho das páginas pai.
Redirecionamentos
Um redirecionamento tem um url, um target e permanent. O site público verifica os redirecionamentos antes das páginas: /old/ respondeu com a página de /about/ quando o seu destino era /about/.
Cache
As páginas compiladas ficam em cache; guardar uma página, um layout, um widget ou uma variável limpa o que depende deles, e um serviço que corre a cada dois minutos limpa também as vistas compiladas.