ForgeCMS
es

CMS

Páginas, layouts, navegación, variables y redirecciones en el CMS de Total.js

CMS · cms@8071e48 cmspageslayoutsnavigationredirectsvariablessitemap

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 url vacío, el CMS la genera a partir del nombre: Hello World pasa 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 url es igual a la dirección pedida, no está disabled y su language, si está definido, es igual al idioma de la petición.
  • La respuesta lleva <title> (el title, o el name, 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 auth solo se sirven a un visitante con sesión. El CMS pregunta a tu código quién es el visitante: define FUNC.auth = function($) { ... } (por ejemplo en un archivo de definitions/) y llama a $.success(user). Sin esa función todos son anónimos y una página auth responde 404.
  • Una página desactivada, una dirección desconocida y una página de otro idioma responden 404. El sitemap /sitemap.xml lista 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.

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.