ajustes
This commit is contained in:
14
CLAUDE.md
14
CLAUDE.md
@@ -48,6 +48,16 @@ Visual components that the site builder uses. Each module is a self-contained un
|
||||
|
||||
See [docs/modular-system.md](docs/modular-system.md) for detailed rules.
|
||||
|
||||
### Pages
|
||||
Every record with an `enlace` field is a page. Pages are either **Builder** (modular) or **Standard**:
|
||||
|
||||
- **Builder**: `controlador` = `cms/lib/plugins/builder_saas/controlador.php` — content via modules
|
||||
- **Standard**: `controlador` = `cms/lib/plugins/builder_saas/controlador_tabla.php` — content in record fields
|
||||
|
||||
**Critical**: Never change `enlace` or `controlador` of existing pages unless explicitly asked.
|
||||
|
||||
See [docs/pages-and-records.md](docs/pages-and-records.md) for full details.
|
||||
|
||||
### General Sections
|
||||
Database-backed templates (headers, footers, record views) that use the `thisrecord` variable to access record fields. They use the same Twig + Acai attribute engine as modules.
|
||||
|
||||
@@ -102,7 +112,8 @@ Do NOT modify web-base files — they are shared across all projects.
|
||||
7. Upload fields are arrays — access with `[0].urlPath`
|
||||
8. Tailwind CSS as primary styling, custom CSS scoped with BEM when needed
|
||||
9. Twig concatenation uses `~` operator: `'value=' ~ variable`
|
||||
10. `enlace` (link) fields already include slashes
|
||||
10. `enlace` (link) fields already include slashes — **NEVER modify an existing enlace** unless explicitly asked
|
||||
11. **NEVER modify the `controlador` field** of existing records — it defines whether a page is Builder or Standard
|
||||
|
||||
## MCP Tools
|
||||
|
||||
@@ -127,4 +138,5 @@ Key workflows:
|
||||
- [docs/production-patterns.md](docs/production-patterns.md) — Real production patterns (header, zigzag, FAQ, forms)
|
||||
- [docs/vue-builder-rules.md](docs/vue-builder-rules.md) — CMS-VUE rules (tabs, colorpicker, components)
|
||||
- [docs/vue-builder-examples.md](docs/vue-builder-examples.md) — Vue builder examples (Banner Slideshow, etc.)
|
||||
- [docs/pages-and-records.md](docs/pages-and-records.md) — Page types (Builder vs Standard), sections, visibility, critical rules
|
||||
- [docs/mcp-tools-reference.md](docs/mcp-tools-reference.md) — MCP tools reference, available tools, workflows
|
||||
|
||||
104
docs/pages-and-records.md
Normal file
104
docs/pages-and-records.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# Pages & Records Guide
|
||||
|
||||
## Page Types
|
||||
|
||||
Every CMS record that has an `enlace` (URL) field is a **page**. Pages come in two types determined by the `controlador` field:
|
||||
|
||||
### Builder (Modular) Pages
|
||||
- `controlador` = `cms/lib/plugins/builder_saas/controlador.php`
|
||||
- Content is built from **modules** (drag & drop components)
|
||||
- The `builder` field contains a JSON array of module instances
|
||||
- Use MCP tools: `add_module_to_record`, `set_module_config_vars`, etc.
|
||||
- The page template renders modules in order from the builder JSON
|
||||
|
||||
### Standard Pages
|
||||
- `controlador` = `cms/lib/plugins/builder_saas/controlador_tabla.php`
|
||||
- Content lives directly in the record fields (`content`, `titulo_alternativo`, etc.)
|
||||
- The `content` field is HTML (wysiwyg)
|
||||
- Use `create_or_update_record` to edit content directly
|
||||
- No modules involved
|
||||
|
||||
### How to determine page type
|
||||
**Always check the `controlador` field** of the record:
|
||||
- Contains `controlador.php` (without `_tabla`) → **Builder**
|
||||
- Contains `controlador_tabla.php` → **Standard**
|
||||
|
||||
## Table Types (Sections)
|
||||
|
||||
Tables with pages are called **sections**. There are two section types defined by `menuType` in the schema:
|
||||
|
||||
### Category (`menuType = "category"`)
|
||||
- **Hierarchical** — pages have parent/child relationships
|
||||
- Fields: `parentNum`, `depth`, `globalOrder`, `lineage`, `siblingOrder`
|
||||
- Example: `apartados` (main site pages)
|
||||
- Uses `visible_en_el_menu` field for menu visibility
|
||||
- Ordered by `globalOrder`
|
||||
|
||||
### Multi (`menuType = "multi"`)
|
||||
- **Flat list** — no hierarchy
|
||||
- Uses `dragSortOrder` for ordering
|
||||
- Example: `blog`, `travesias`
|
||||
- Typically uses `visible` field (not `visible_en_el_menu`)
|
||||
|
||||
## Critical Rules for Pages
|
||||
|
||||
### NEVER change the `enlace` field
|
||||
Unless the user explicitly asks to change a page URL, **never modify the `enlace` field**. Changing it breaks existing links, SEO, and navigation. The enlace is set when the page is created and should remain stable.
|
||||
|
||||
### NEVER change the `controlador` field
|
||||
The controlador defines whether the page is Builder or Standard. Changing it breaks the page rendering. Only set it during page creation.
|
||||
|
||||
### Visibility fields
|
||||
- `apartados` and other category tables use: `visible_en_el_menu` (1 = visible, 0 = hidden)
|
||||
- `blog`, `travesias` and other multi tables use: `visible` (1 = visible, 0 = hidden)
|
||||
- Always check which field the table has before toggling visibility
|
||||
|
||||
### Name/Title fields
|
||||
- Some tables use `name` (e.g. `apartados`)
|
||||
- Others use `title` (e.g. `blog`, `travesias`)
|
||||
- Check the schema to know which one to use
|
||||
|
||||
## Working with Builder Pages
|
||||
|
||||
### Adding content to a new Builder page
|
||||
1. List available modules: `list_available_modules`
|
||||
2. Add modules: `add_module_to_record` (one at a time, in order)
|
||||
3. Configure each module: `set_module_config_vars` with content
|
||||
4. Add images if needed: `upload_record_image` or `generate_image`
|
||||
|
||||
### Editing an existing Builder page
|
||||
1. List current modules: `list_page_modules`
|
||||
2. Get module vars: `get_module_config_vars`
|
||||
3. Update vars: `set_module_config_vars`
|
||||
4. Or edit the module template: edit `index-base.tpl` → `compile_module`
|
||||
|
||||
## Working with Standard Pages
|
||||
|
||||
### Adding content to a Standard page
|
||||
Use `create_or_update_record` to set:
|
||||
- `content` — HTML content (main body)
|
||||
- `titulo_alternativo` — alternative title shown on the page
|
||||
- `titulo_de_pagina` — browser tab title (SEO)
|
||||
- `metatag_descripcion` — meta description (SEO)
|
||||
|
||||
### Example: Update a standard page
|
||||
```
|
||||
create_or_update_record with:
|
||||
tableName: "apartados"
|
||||
recordNum: "87"
|
||||
fields:
|
||||
content: "<h2>Our Services</h2><p>We offer...</p>"
|
||||
titulo_de_pagina: "Services | My Site"
|
||||
metatag_descripcion: "Discover our services..."
|
||||
```
|
||||
|
||||
## The `apartados` Table (Special)
|
||||
|
||||
The `apartados` table is the main pages table in most Acai sites. Key characteristics:
|
||||
- `menuType = "category"` — hierarchical with parent/child
|
||||
- `parentNum` — the num of the parent page (0 = root level)
|
||||
- `depth` — nesting level (0 = root, 1 = child, 2 = grandchild)
|
||||
- `globalOrder` — display order across the entire tree
|
||||
- `visible_en_el_menu` — whether the page shows in the navigation menu
|
||||
- `breadcrumb` — auto-generated breadcrumb path
|
||||
- Pages can be either Builder or Standard (check `controlador` field per record)
|
||||
Reference in New Issue
Block a user