Saltar al contenido principal

Code Editor

El code editor permite editar los archivos fuente del tema directamente desde el panel admin, estilo Shopify. Accede desde Apariencia → Code Editor.

Acceso

/admin/themes/code

Árbol de archivos

El panel izquierdo muestra el árbol de archivos del tema activo:

dawn/
├── config/
│ ├── settings_schema.json
│ └── settings_data.json
├── sections/
│ ├── hero.html
│ ├── banner.html
│ ├── slideshow.html
│ └── ...
├── snippets/
│ ├── product-card.html
│ ├── breadcrumb.html
│ └── ...
├── templates/
│ ├── index.html
│ ├── product.html
│ └── ...
├── locales/
│ ├── es.json
│ └── en.json
└── assets/
├── theme.css
└── theme.js

Extensiones editables

ExtensiónDescripción
.htmlTemplates Go y Liquid
.liquidTemplates Liquid explícitos
.cssHojas de estilo
.jsJavaScript
.jsonConfiguración, locales, templates JSON
.txtArchivos de texto
.svgIconos SVG
.mdMarkdown

Directorios bloqueados

Los siguientes directorios no son editables desde el code editor:

  • _platform/ — Addons compartidos
  • _base/ — Secciones heredadas
  • _tenants/ — Overrides de otros tenants

Estos se excluyen intencionalmente para evitar que un merchant rompa la base compartida.

CRUD de archivos

AcciónEndpointDescripción
Leer/admin/themes/templates/*Retorna el contenido del archivo
CrearPOSTNuevo archivo en el tema
EditarPUTActualiza el contenido
EliminarDELETEBorra el archivo
RenombrarPOSTCambia el nombre del archivo

Guardado como overrides

Cuando un merchant edita un archivo, no se modifica el archivo original del tema. En su lugar, se guarda como override del tenant en GCS:

themes/tenants/<tenant_id>/<theme_name>/overrides/<path>

Por ejemplo, si editas dawn/sections/hero.html, se guarda como:

themes/tenants/abc-123/dawn/overrides/sections/hero.html

Preview del code editor

El preview del code editor usa OpenPreview() del TenantThemeSource, que aplica los overrides de draft encima del tema publicado. Los cambios se ven inmediatamente en el iframe.

AI Edit

Cada sección tiene un botón de AI Edit (/admin/themes/sections/:id/ai-edit) que permite editar el código de la sección con asistencia de IA.

Templates JSON

Los archivos .json en templates/ definen layouts de secciones (sections-everywhere). Ejemplo:

{
"sections": {
"hero-abc123": {
"type": "hero",
"settings": { "variant_id": "full-bleed" }
},
"featured-def456": {
"type": "featured_products",
"settings": { "source": "collection" }
}
},
"order": ["hero-abc123", "featured-def456"]
}

Buenas prácticas

  • No editar _base/ ni _platform/ desde el code editor — están bloqueados por una razón
  • Usar snippets para código reutilizado — crear en snippets/ y renderizar con {% render "nombre" %}
  • Preview antes de publicar — siempre verificar que el template compila sin errores
  • Separar CSS y JS — mantener estilos en assets/theme.css y lógica en assets/theme.js