Páginas, layouts, navegación, variables y redirecciones en el CMS de Total.js
El CMS guarda el HTML de cada layout y de cada página como un archivo y sus datos (dirección, título, layout...) en los metadatos del sitio. Una petición al sitio público busca una página por su dirección y la renderiza dentro de su layout.
Layouts
Un layout es un documento HTML completo. El elemento con id="CMS" marca el lugar donde va el contenido de la 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 recibe name, icon, color, html y una lista de scripts que se añaden a todas las páginas del layout. En el HTML, $NAME se sustituye por la variable de ese nombre (ver más abajo) y @{year} por el año actual.
Páginas
Una página tiene un name, un layoutid (obligatorio), una dirección url y, opcionalmente, title, description, keywords, language, parentid, icon, color y las banderas disabled, auth, pinned y nocache. Su HTML (guardado con pages_save_html) es lo que va dentro del elemento id="CMS".
- Si dejas
urlvacío, el CMS la genera a partir del nombre:Hello Worldpasa a ser/hello-world/, y bajo una página padre la dirección empieza por la dirección del padre. - El sitio público sirve una página cuando su
urles igual a la dirección pedida, no estádisabledy sulanguage, si está definido, es igual al idioma de la petición. - La respuesta lleva
<title>(eltitle, o elname, seguido del nombre del sitio en todas las páginas salvo/), la descripción y las palabras clave, un script que cuenta las visitas (/visitors.js) y el estilo de los widgets que usa la página. - Las páginas
authsolo se sirven a un visitante con sesión. El CMS pregunta a tu código quién es el visitante: defineFUNC.auth = function($) { ... }(por ejemplo en un archivo dedefinitions/) y llama a$.success(user). Sin esa función todos son anónimos y una páginaauthresponde 404. - Una página desactivada, una dirección desconocida y una página de otro idioma responden 404. El sitemap
/sitemap.xmllista las páginas que no están desactivadas.
Variables
El plugin Variables guarda una lista de pares NAME: value (Variables|save con vars). Cualquier $NAME de un layout o de una página se convierte en su valor cuando se sirve la página, lo que sirve para un teléfono, el nombre de una empresa o un enlace que aparece en muchos sitios. Un $NAME desconocido se queda como está escrito.
Navegación
Una navegación es un menú descrito en el admin (un nombre y un árbol de enlaces con name, url, title, icon, color, target, hidden, highlight y children) y dibujado por tu layout con una plantilla escrita con Tangular. Pon un script en el 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>Al guardar el layout se crea una navegación llamada main si no existe; después edita sus enlaces en el plugin Navegación. En la plantilla, value.children es la lista de enlaces visibles y value.url la dirección que se está sirviendo. Dale al script un name; con solo un id el compilador lo acepta, pero al guardar el layout no hay respuesta.
También existe <script type="text/breadcrumb"> para la ruta de páginas padre.
Redirecciones
Una redirección tiene una url, un target y permanent. El sitio público comprueba las redirecciones antes que las páginas: /old/ respondió con la página de /about/ cuando su destino era /about/.
Caché
Las páginas compiladas se guardan en caché; al guardar una página, un layout, un widget o una variable se limpia lo que depende de ello, y un servicio que se ejecuta cada dos minutos también limpia las vistas compiladas.