Documentación

Como funciona AntCMS.

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

website
├─ public
│  ├─ blocks/
│  │  └─ info.html // bloques de texto
│  ├─ content/
│  │  ├─ 404.html
│  │  ├─ blog
│  │  │  └─ index.html
│  │  └─ index.html
│  ├─ javascript/
│  ├─ icons/
│  ├─ images/
│  ├─ stylesheets/
│  ├─ views/
│  │  ├─ partials
│  │  │  ├─ head.html
│  │  │  ├─ footer.html
│  │  │  └─ etc..
│  │  ├─ 404.html
│  │  ├─ group.html
│  │  └─ index.html
├─ AntCMS.php
├─ index.php
├─ robots.txt
└─ humans.txt

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).
Nota: puede incluir su propia plantilla en 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 AntCMS::runAction('theme_after);.

<?php
// llamamos a la acción theme_after
AntCMS::actionAdd('theme_after',function(){
    // y ahora que enseñe esto
    echo '<a href="'.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::actionAdd('theme_after',function(){
    // urlSegment sirve para señalar un segmento del enlace
    // si pones var_dump(AntCMS::urlSegments()) veras todos los segmentos del enlace
    if(AntCMS::urlSegment(0) == 'articulos' && AntCMS::urlSegment(1) == 'extensiones'){
        // y ahora que enseñe esto
        echo '<a href="'.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::actionRun('head') que hay en el archivo head.inc.html.

<?php
// llamamos a la accion head
AntCMS::actionAdd('head',function(){
    // urlSegment sirve para señalar un segmento del enlace
    if(AntCMS::urlSegment(0) == 'articulos' 
        && 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.