Los grandes
CMS utilizan
MySQL
o sistemas similares de gestión de bases de datos en un segundo plano. Los sistemas de gestión de bases de datos
(SGBD) actúan de manera relacional y trabajan con varias tablas para gestionar las consultas, para lo que necesitan un servidor adicional. Los
flat file CMS no cuentan con elementos de gestión de bases de datos, por lo que es habitual hablar de ellos como
CMS sin bases de datos. Con ello no hay lugar para los
SGBD y tampoco para los servidores configurados a tales efectos.
Estos sistemas pueden o bien erigirse como la solución perfecta o lograr simplicidad donde se necesita complejidad. Las ventajas de los sistemas de gestión de contenidos basados en archivos planos surgen en la mayoría de los casos de su estructura simple:
Siempre que sea posible, evite modificar los archivos principales de AntCMS.
website
├─ app
│ ├─ antcms/
│ ├─ anttpl/
│ ├─ functions/ // funciones de la plantilla
│ ├─ config // configuracion
│ ├─ defines.php
│ └─ init.php
├─ public
│ ├─ blocks/
│ │ └─ info.html // bloques de texto
│ ├─ content/
│ │ ├─ 404.html
│ │ ├─ blog
│ │ │ └─ index.html
│ │ └─ index.html
│ ├─ javasacript/
│ ├─ icons/
│ ├─ images/
│ ├─ stylesheets/
│ ├─ views/
│ │ ├─ partials
│ │ │ ├─ head.html
│ │ │ ├─ footer.html
│ │ │ └─ etc..
│ │ ├─ 404.html
│ │ ├─ group.html
│ │ └─ index.html
├─ index.php
├─ robots.txt
├─ humans.txt
└─ tmp
Las Acciones son funciones que podemos integrar en la plantilla para hacerla mas dináminca. Tenemos unas cuantas por defecto que son:
- head: usada para incluir los estilos.
- theme_before: comentarios tipo discus
- theme_after: resolución de formularios
- footer: Analytics y javascript
Creando Acciones
Vamos a crear una acción que automáticamente genere un enlace al final de cada pagina usando una acción que ya esta en la plantilla que es
AntCms\AntCMS::runAction('theme_after);
.
<?php
// llamamos a la acción theme_after
AntCms\AntCMS::actionAdd('theme_after',function(){
// y ahora que enseñe esto
echo '<a href="'.AntCms\AntCMS::urlBase().'/articulos">Ver articulos.</a>';
});
Y ahora en todas las páginas al final se verá ese enlace, asi de facil.
Ahora vamos añadir algo más, le vamos a decir que si está en la sección artículos y la página extensiones enseñe el texto y si no no enseñe nada.
<?php
// llamamos a la acción theme_after
AntCms\AntCMS::actionAdd('theme_after',function(){
// urlSegment sirve para señalar un segmento del enlace
// si pones var_dump(AntCms\AntCMS::urlSegments()) veras todos los segmentos del enlace
if(AntCms\AntCMS::urlSegment(0) == 'articulos' && AntCms\AntCMS::urlSegment(1) == 'extensiones'){
// y ahora que enseñe esto
echo '<a href="'.AntCms\AntCMS::urlBase().'/articulos">Ver articulos.</a>';
}
});
Ahora haremos una acción que cambie el fondo solo en esta página, para ello usaremos el
AntCms\AntCMS::actionRun('head')
que hay en el archivo
head.inc.html.
<?php
// llamamos a la accion head
AntCms\AntCMS::actionAdd('head',function(){
// urlSegment sirve para señalar un segmento del enlace
if(AntCms\AntCMS::urlSegment(0) == 'articulos'
&& AntCms\AntCMS::urlSegment(1) == 'extensiones'){
// y ahora incrustamos esto
echo '<style rel="stylesheet">
body{
background:blue;
color:white;
}
pre,code{
background: #0000bb;
border-color: #00008e;
box-shadow: 0px 3px 6px -2px #02026f;
color: white;
}
</style>';
}
});
Se trata de un simple archivo
html situado en la carpeta
/blocks que podemos usar la etiqueta
{Blocks: nombre-del-archivo}
.
Es práctico para usar trozos de código reusables en la plantilla.
Estructura de la página.
Title:
Description:
Tags:
Author:
Image: // href file
Date:
Robots:
Keywords:
Category:
Template: // index,post
Published: // true, false
Background: // blue, #f55,rgb(0,0,0)
Video: // src file
Color: // blue, #f55,rgb(0,0,0)
Css: // src file
Javascript: // src file
Attrs: // = [1,2,true,'string']
Json: // = json file
contenido de la pagina
Código | Información |
---|---|
Title | Título de la página. |
Description | Descripción de la página. |
Keywords | Palabras clave. |
Published | Opción si quiere verse o no. |
Author | Autor de la página. |
Date | Fecha de la creación. |
Image | Imagen de la página. |
Robots | Seguimiento indexado. |
Attrs | Atributos en formato Json. |
Template | Nombre de la plantilla. |
views
├─ partials
│ ├─ footer.inc.html
│ ├─ head.inc.html
├─ 404.html
├─ group.html
└─
index.html
Plantilla básica. index.html
{* head (metatags, css, etc..) *}
{Partial: inc/head.inc.html}
{* action (accion que cargue antes del contenido)*}
{Action: theme_before}
{* contenido *}
{$page.content}
{* action (accion que cargue despues del contenido)*}
{Action: theme_after}
{* footer (scripts, etc..) *}
{Partial: inc/footer.inc.html}
Glosario variables de plantilla.
Código | Información |
{* comentario *} | Simple comentario. |
{date} | Obtener fecha. |
{Year} | Obtener año. |
{Site_url} | Obtener url del sitio. |
{Site_current} | Obtener hash del sitio. |
{Pages: nombre} | Obtener listado paginas. |
{If:} | Inicio condicional. |
{Else} | Condicional else. |
{Elseif:} | Condicional else if. |
{/If} | Cierre condicional. |
{Segment:} | Inicio segmento, (Condicional para segmento de url). |
{/Segment} | Fin condicional. |
{Loop: $datos as $key=>$val} | Bucle foreach ( $datos as $key=> $val). |
{Loop: $datos as $dato} | Bucle foreach ( $datos as $dato). |
{/Loop} | Fin loop. |
{? $var = 'nueva variable' ?} | Crear una nueva variable. |
{?= $var?} o {$var} | Llamar nueva variable. |
{$page.title} | Obtenemos las variables de la página (title,description, etc..). |
{$config.title} | Obtenemos las variables del archivo config (title,description, etc..). |
{'nombre'|capitalize} | Capitalizar texto. |
{'nombre'|lower} | Descapitalizar. |
{Action: nombre} | Llamar acciones. |
{Include: archivo} | Incluir archivo. |
{Block: archivo} | Incluir bloque. |
{Partial: archivo} | Incluir trozo de texto dentro de el directorio la plantilla. |
{Assets: archivo} | Incluir archivo de la carpeta de assets de la plantilla. |
{Iframe: archivo} | Incluir iframe. |
{Youtube: archivo} | Incluir id de video de youtube (Opción de formato 1x1,16x9,21x9). |
{Vimeo: archivo} | Incluir id de video de vimeo (Opción de formato 1x1,16x9,21x9). |
Nota: puede incluir su propia plantilla en
antcms/config/templating.php