3.6 KiB
3.6 KiB
Quick Reference
Reglas Críticas
| Regla | Correcto | Incorrecto |
|---|---|---|
| Nombres de tabla | 'productos' |
'cms_productos' |
| Primary key | record.num |
record.id |
| Foreign keys | categoria_num |
categoria_id |
| Upload fields | record.imagen[0].urlPath |
record.imagen |
| Optimizar imagen | record.imagen[0].urlPath | imagec(800) |
record.imagen.url |
| Filtros Twig | {{ 'table' | get() }} |
{{ get('table') }} |
| Campo enlace | {{ producto.enlace }} (ya tiene barras) |
"/{{ producto.enlace }}/" |
| Nombres builder vars | data-field-label → sin espacios/especiales, minúsculas |
Mantener casing original |
| Checkbox | 1 o 0 (número) |
true/false |
| Formato fecha | YYYY-MM-DD HH:mm:ss |
Cualquier otro formato |
| c-if igualdad | c-if="x = 'valor'" (un =) |
c-if="x == 'valor'" |
| Twig if igualdad | {% if x == 'valor' %} (doble ==) |
{% if x = 'valor' %} |
| queryDB tablas | SELECT * FROM cms_tabla (con prefijo) |
SELECT * FROM tabla |
| get tablas | 'tabla' | get() (sin prefijo) |
'cms_tabla' | get() |
Builder Variable Types
| Type | Elemento | Retorna |
|---|---|---|
textfield |
<p> |
String |
headfield |
<h1>-<h6> |
String + var _tag |
textbox |
<div> |
String multilínea |
wysiwyg |
<div class="wysiwyg"> |
HTML string |
link |
<a> |
URL string |
upload |
<img> |
Array de {urlPath, info1} |
uploadMulti |
<li> |
Itera archivos subidos |
list (fijo) |
<div data-list-options="..."> |
Valor seleccionado |
list (tabla) |
<div data-list-table="..."> |
num del registro |
multiv2 |
<li> wrapper |
Array de objetos |
Acai HTML Attributes
| Atributo | Uso | Ejemplo |
|---|---|---|
c-if |
Condicional | <p c-if="activo = 1"> |
c-else |
Rama else | <p c-else> |
c-for |
Loop array | <li c-for="item in items"> |
c-for |
Loop tabla | <li c-for="p in productos" c-where="'activo=1'" c-limit="10"> |
c-hidden |
Variable oculta | <p c-hidden="true" data-field-type="textfield"> |
c-class |
Clase condicional | <div c-class="{ 'bg-red': color == '1' }"> |
c-form |
Formulario | <c-form tableName="'contacto'" captcha="true"> |
Twig Filters
| Filtro | Uso |
|---|---|
get |
'table' | get(where, order, limit) |
hook |
'hooks/module_id/' | hook({params}) |
module |
'module_id' | module({params}) |
queryDB |
'SELECT ...' | queryDB() |
imagec |
path | imagec(width) |
translate |
'text' | translate — tabla textos_generales (editar/traducir), no crear JSONs i18n |
json_decode |
'json_string' | json_decode |
raw |
variable | raw |
truncate |
text | truncate(100) |
Formato de datos para registros
| Tipo | Formato | Ejemplo |
|---|---|---|
| Text field | String | "Texto" |
| Text box | String multilínea | "Línea 1\nLínea 2" |
| Date/time | YYYY-MM-DD HH:mm:ss |
"2025-12-03 10:30:00" |
| Wysiwyg | HTML string | "<p class=\"font-bold\">Texto</p>" |
| List | String o número | "activo" o "1" |
| Checkbox | Número 1/0 | 1 o 0 |
| Multivalores | String JSON | "[{\"producto\":\"1\"}]" |
| Upload | NO enviar — subir imagen después de crear registro |
Variables globales
| Variable | Descripción |
|---|---|
section_id |
ID único por instancia del módulo |
server.HTTP_HOST |
Dominio actual |
loop.index |
Índice de iteración (1-based) |
loop.index is odd/even |
Para layouts alternados |
interno |
True dentro del editor CMS |
thisrecord |
Registro actual (en secciones generales) |