5.9 KiB
title, tags, load_priority, load_when, summary
| title | tags | load_priority | load_when | summary | |||||
|---|---|---|---|---|---|---|---|---|---|
| Glosario de Acai CMS |
|
85 |
|
Definiciones cortas de términos clave de Acai CMS: sectionId, recordNum, apartados, builder_custom, custom-{tableName}, enlace, controlador, thisrecord, multiv2, c-form, hook middleware, JWT acai_token, web-base, template/estandar/, Builder vs Standard. |
Glosario Acai CMS
Definiciones cortas de los términos que aparecen en docs y prompts. Si te pierdes con un concepto, lo encuentras aquí en una línea.
Estructura del proyecto
template/estandar/ — directorio donde viven los archivos custom del proyecto: módulos, CSS/JS globales, imágenes del template. Lo que el desarrollador edita.
web-base — código compartido del CMS (motor de render, admin, APIs). Vive aparte y se monta como volumen Docker. No tocar.
apartados — tabla principal de páginas del sitio. Cada registro es una página. Tiene enlace, controlador, jerarquía padre-hijo (parentNum).
hooks/ — directorio de hooks PHP globales. Convención: hooks/hooks.<id>.php → endpoint /hooks/<id>/.
Páginas y registros
Builder vs Standard — modos de renderizado de una página. Lo decide el campo controlador del registro:
- Builder:
controlador.php→ contenido modular (módulos drag-drop). - Standard:
controlador_tabla.php→ contenido en campos del registro (contentHTML).
enlace — URL pública de un registro (con barras incluidas, ej. /servicios/). NUNCA modificar a posteriori (rompe SEO y enlaces internos).
controlador — campo que define Builder vs Standard. NUNCA modificar a posteriori.
recordNum / num — Primary key. Acai siempre usa num (entero), nunca id.
<table>_num — convención de foreign keys. categoria_num apunta al num de la tabla categorias.
Módulos y secciones
Módulo — componente visual reutilizable. Vive en template/estandar/modulos/<id>/. Se coloca en páginas Builder vía drag-drop. Archivos: index-base.tpl (source), style.css, script.js, hook.php (opcional). El compilador genera index.tpl, index-twig.tpl, builder.json.
Sección general — módulo especial que el CMS enlaza por convención de nombre. Renderiza el detalle de un registro de una tabla con enlace. Convención: template/estandar/modulos/custom-{tableName}/. Recibe el registro como thisrecord.
custom-{tableName} — convención de nombre de la sección general. NO usar _detailPage, NO crear página por registro en apartados.
thisrecord — variable Twig disponible en secciones generales con el registro actual. Acceso a campos: thisrecord.titulo, thisrecord.imagen[0].urlPath, thisrecord.categoria_num.
builder_custom — tabla interna de Acai donde el CMS guarda los valores de los módulos. Cuando el usuario rellena un módulo en una página Builder, los valores se persisten ahí. El recordNum para upload_record_image cuando subes a un módulo es el num de la fila correspondiente en builder_custom.
sectionId — identificador único de una instancia de módulo en una página Builder. Lo devuelve add_module_to_record. No es el recordNum para uploads (eso es num de builder_custom).
multiv2 — tipo de campo del builder que permite arrays de objetos repetidos (ej. lista de servicios con título + descripción + icono cada uno). Se itera con c-for.
Layout global
layout.json — fichero (cms/lib/plugins/builder_saas/layout.json) con el header, footer, librerías globales, javascript/style globales, y los hooks registrados. NUNCA editar a mano — usar set_layout_field o las tools de hooks/librerías.
Hook middleware — un hook global puede configurarse para auto-ejecutarse antes de renderizar páginas: vacío (solo on-demand), ["allurls"] (todas las páginas) o ["cms_<table>-<num>", ...] (páginas específicas). Se configura con set_hook_middleware.
Auto-registro de hooks — cuando creas/borras un fichero hooks/hooks.<X>.php con acai-write/acai-delete, el backend sincroniza automáticamente la entrada en layout.json["hooks"]. NO tocar layout.json a mano.
Builder UI
c-form — atributo que convierte un <form> en un formulario que persiste a una tabla del CMS. Sintaxis: <c-form tableName="'contacto'" captcha="true">. Se renderiza como form HTML con submit a un endpoint Acai.
data-field-* — familia de atributos que marca un elemento como editable en el builder visual. Tipos: textfield, headfield, textbox, wysiwyg, link, upload, uploadMulti, list, multiv2, checkbox, colorpicker.
c-if, c-for, c-class, c-hidden, c-required — atributos de lógica visual. c-if usa un solo = (c-if="x = 1"), Twig {% if %} usa doble ==.
Datos / API
CmsApi (alias CocoDB) — librería PHP server-side para CRUD sobre las tablas del CMS. Métodos: CmsApi::get(opts), ::insert(table, data), ::update(table, where, data), ::delete(table, where). Soporta uploads, relations, translates, groupBy, aggregates como opciones.
JWT acai_token — token de auth del proyecto que vive en .acai. Caduca y se renueva con refresh_acai_token cuando da error 403.
X-MCP-Secret — token de auth para clientes MCP externos (Claude Code, extensión VS Code). Vive en Redis. Es user-wide (autoriza todos los proyectos del usuario).
Filtros Twig clave
| get — query a una tabla del CMS. 'productos' | get('activo=1', 'orden ASC', 10).
| queryDB — SQL crudo (con cms_ prefix). 'SELECT * FROM cms_productos WHERE...' | queryDB().
| hook — invoca un hook PHP desde Twig. 'hooks/calcular/' | hook({precio: 100}).
| imagec — optimiza una imagen al ancho dado. imagen[0].urlPath | imagec(800).
| translate — traduce vía tabla textos_generales. 'texto a traducir' | translate.