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.
Instalación
Copiar el contenido de la carpeta en el servidor, luego abrir archivo index.php y cambiar los valores de $config
y $templating
si quiere añadir nuevas etiquetas y/o funciones.
Si tiene mas conocimientos de Php
puede cambiar o añadir nuevas funciones en el archivo AntCMS.php
en la clase Functions.
Estructura de AntCMS
AntCMS
├───config
├───panel
├───public
│ ├───blocks // Bloques de contenido
│ ├───content // Contenido
│ ├───documents // Documentos tipo pdf,docx etc
│ ├───fonts // Fuentes
│ ├───icons // Iconos
│ ├───images // Imagenes
│ ├───javascript // Archivos Javascript
│ ├───stylesheets // Archivos Css
│ └───views // Plantilla frontend
├───src
│ ├───Ant // Clase Ant
│ └───Vendor // Otras clases
└───tmp // Archivos temporales
Creación de una página
Crea una página a partir de un archivo .html
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. |
Plantillas en AntCMS
Las plantillas en AntCMS se alojan en la carpeta views.
Esctructura de la carpeta views.
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 la 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). |
index.php
en la variable $templating
Acciones
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 Ant\FrontEnd\FrontEnd::runAction('theme_after);
.
<?php
// llamamos a la acción theme_after
Ant\FrontEnd\FrontEnd::actionAdd('theme_after',function(){
// y ahora que enseñe esto
echo '<a href="'.Ant\FrontEnd\FrontEnd::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
Ant\FrontEnd\FrontEnd::actionAdd('theme_after',function(){
// urlSegment sirve para señalar un segmento del enlace
// si pones var_dump(Ant\FrontEnd\FrontEnd::urlSegments()) veras todos los segmentos del enlace
if(Ant\FrontEnd\FrontEnd::urlSegment(0) == 'articulos' && Ant\FrontEnd\FrontEnd::urlSegment(1) == 'extensiones'){
// y ahora que enseñe esto
echo '<a href="'.Ant\FrontEnd\FrontEnd::urlBase().'/articulos">Ver articulos.</a>';
}
});
Ahora haremos una acción que cambie el fondo solo en esta página, para ello usaremos el Ant\FrontEnd\FrontEnd::actionRun('head')
que hay en el archivo head.inc.html.
<?php
// llamamos a la accion head
Ant\FrontEnd\FrontEnd::actionAdd('head',function(){
// urlSegment sirve para señalar un segmento del enlace
if(Ant\FrontEnd\FrontEnd::urlSegment(0) == 'articulos'
&& Ant\FrontEnd\FrontEnd::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.