ForgeCMS
pt

CMS

Páginas, layouts, navegação, variáveis e redirecionamentos no CMS do Total.js

CMS · cms@8071e48 cmspageslayoutsnavigationredirectsvariablessitemap

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 url vazio, o CMS cria uma a partir do nome: Hello World passa 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á disabled e o seu language, se definido, é igual ao idioma do pedido.
  • A resposta recebe <title> (o title, ou o name, 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 auth só são servidas a um visitante com sessão iniciada. O CMS pergunta ao seu código quem é o visitante: defina FUNC.auth = function($) { ... } (por exemplo num ficheiro de definitions/) e chame $.success(user). Sem essa função todos são anónimos e uma página auth responde 404.
  • Uma página desativada, um endereço desconhecido e uma página de outro idioma respondem 404. O sitemap /sitemap.xml lista 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.

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.