MageObsidian Theme¶
MageObsidian Theme es el tema de referencia para storefront, construido por completo con los MageObsidian Components. Reemplaza el frontend Luma de Magento por un stack moderno — plantillas Twig, Vite, TailwindCSS 4 e islas Vue con hidratación diferida — manteniendo los layouts, bloques y view models nativos de Magento. Ya es funcional y cubre el mismo terreno que Luma (catálogo, checkout, cliente, búsqueda, carrito, wishlist, comparación, reseñas y ventas).
Esta página es una guÃa práctica para usar y extender el tema. Para el mecanismo común a todo tema compatible, consulta Temas Compatibles.
Compatibilidad
- ✅ Magento Open Source 2.4.7+ — soportado hoy.
- 🧪 Adobe Commerce y Mage-OS — técnicamente compatibles desde el core 2.6.0, pero aún sin pruebas completas.
Arquitectura: dos capas¶
El tema se entrega como dos temas apilados para separar limpiamente el diseño de la infraestructura:
-
MageObsidian/theme-base
La base técnica neutral: cableado del build y plantillas estructurales, sin tokens de diseño. Suele ser el padre del que heredas cuando empiezas un look completamente nuevo.
Paquete:
mage-obsidian/theme-base -
MageObsidian/default
La piel OBSIDIAN: tokens de diseño, plantillas Twig estilizadas y una capa demo de moda reemplazable. Hereda de ella si quieres conservar OBSIDIAN y ajustar; reemplaza sus tokens para rebrandear.
Paquete:
mage-obsidian/theme-default
La lógica de storefront — view models, neutralización del layout legacy e islas Vue compartidas —
vive en el repositorio mage-obsidian/module-storefront,
que theme-base arrastra automáticamente.
La herencia se declara con el theme.xml nativo de Magento:
El directorio de un tema se ve asÃ:
Instalar y activar¶
-
Requiere el tema con Composer.
mage-obsidian/theme-defaultarrastratheme-base, el motor modern-frontend y todo el stack de módulos storefront (paridad con Luma) automáticamente: -
Selecciónalo en el Admin en Stores → Configuration → General → Design → Design Theme (o vÃa
bin/magento config:set) y aplÃcalo a tu store view. -
Regenera el contrato PHP ↔ JS para que el motor de build vea el tema:
-
Compila los assets del frontend a disco:
Consulta Instalación para la configuración inicial.
Desarrollar con recarga en vivo (HMR)¶
Para el dÃa a dÃa, levanta el dev server de Vite para que los cambios en .vue, CSS y Twig se
recarguen en caliente en el navegador. Habilita HMR y conecta nginx una vez, luego arranca el
server por sesión:
El snippet de nginx redirige las peticiones /static al dev server de Vite — el host y el puerto
salen de tu config, no los eliges a mano. HMR se ignora en modo producción. Recorrido completo y
solución de problemas en Configuración de HMR y
Flujo de Desarrollo.
Desplegar a producción¶
No hay un paso de build aparte. MageObsidian se engancha al deploy de static-content estándar de Magento: sus plugins excluyen los temas modernos del pipeline legacy de Less/RequireJS e inyectan la salida de Vite (minificada, con tree-shaking y hashing) como parte del comando normal:
Solo los temas que incluyen etc/mage_obsidian_compatibility.xml pasan por el pipeline de Vite; el
resto sigue el deploy nativo de Magento sin tocarse. Consulta
Compilar Assets Estáticos.
Re-tematizar: tokens de diseño¶
Re-pintar OBSIDIAN es CSS-first: cada color, fuente, radio y easing vive en el bloque @theme
de web/css/theme.source.css. Cambia esos tokens y todo el tema lo sigue — sin tocar configuración
JavaScript.
Las plantillas consumen estos tokens como utilidades de Tailwind (font-display, text-ink,
bg-alabaster, rounded-edge, …), asà que editar un token re-fluye todas las pantallas a la vez.
No edites default en su lugar
Para rebrandear, crea tu propio tema hijo (más abajo) y sobrescribe solo los tokens que necesites. Asà tus cambios quedan a salvo de actualizaciones. Para el conjunto completo de opciones de CSS y la exclusión de CSS de módulos, consulta Configuración de CSS.
Apariencia clara y oscura¶
OBSIDIAN puede ofrecer al comprador un escaparate claro, automático u oscuro. Viene desactivado: un escaparate oscuro es una decisión de marca, y la fotografÃa de catálogo sobre fondo blanco se ve muy distinta contra una página oscura. Comprueba la tuya antes de activarlo.
Activado, aparece en la cabecera un control de tres estados —sol, monitor, luna— con el automático
en medio. El automático sigue al sistema operativo y lo sigue aunque el comprador lo cambie durante
la visita. La elección vive en localStorage, nunca en una cookie.
Nunca varÃa el documento servido¶
La apariencia se decide en el navegador, después de que el HTML se haya entregado. Dos
compradores con apariencias opuestas reciben los mismos bytes, asà que la página sigue siendo tan
cacheable como era: sin X-Magento-Vary, sin entradas duplicadas en Varnish, sin una cabecera
Vary propia.
Un guion en lÃnea en el <head> —emitido por el SecureHtmlRenderer de Magento, asà que lleva el
nonce de la CSP— lee la elección guardada y marca data-theme en <html> antes de la primera
pintura. Los tokens de apariencia se inlinean junto a él, de modo que el primer fotograma ya sale
correcto aunque la hoja de estilos diferida siga en camino.
El estado automático necesita JavaScript
El guion es lo que traduce la preferencia del sistema a una apariencia. Con los guiones
desactivados el escaparate se queda en claro. Eso mismo es lo que hace absoluto el interruptor
de apagado: sin guion no hay data-theme, y sin data-theme no hay apariencia oscura.
La paleta oscura¶
La apariencia oscura redefine los mismos tokens en vez de introducir otros nuevos, asà que cada
plantilla que ya lee text-ink o bg-alabaster la sigue sin tocarse. La paleta vive en su propio
archivo, web/css/appearance.css:
La indirección es deliberada. Los nombres de los tokens describen la apariencia clara
—--color-ink significa «tinta oscura», --color-alabaster significa «piedra clara»—, asà que en
la apariencia oscura sus valores dicen lo contrario de su nombre. Asignarlos desde variables de rol
(--dark-text, --dark-surface) es lo que mantiene eso legible en vez de parecer un error.
Para re-marcar la apariencia oscura, sobrescribe las variables de rol en tu tema hijo; nunca hace falta tocar el mapeo.
Dos cosas que revisar en un escaparate oscuro
La fotografÃa de producto. Las imágenes de catálogo con fondo blanco se convierten en rectángulos brillantes sobre una página oscura. Ningún token lo arregla: decide si lo mitigas o lo aceptas, con la parrilla delante.
La separación entre superficies. El ratio de contraste es una métrica de legibilidad de
texto y se comprime entre superficies oscuras: dos superficies que el comprador distingue sin
esfuerzo pueden medir 1,1:1. Compara luminosidad perceptual (L* de CIELAB) en su lugar —
OBSIDIAN mantiene las superficies contiguas separadas al menos 7 L*, la misma separación que
ya usa su paleta clara.
Construir tu propio tema encima¶
Crea un tema en app/design/frontend/Vendor/Custom/ y hereda de theme-base (lienzo limpio) o de
default (conservar OBSIDIAN y ajustar):
¿theme-base o default?
Hereda de default cuando OBSIDIAN se acerca a lo que quieres — re-tematiza sus tokens y
sobrescribe unas pocas plantillas. Es el camino más rápido y conservas el storefront ya
estilizado y con paridad completa. Parte de theme-base solo cuando quieras un lienzo
limpio y vayas a diseñar cada superficie desde cero.
-
registration.phpytheme.xmlcon el padre de tu elección: -
Haz opt-in al build de MageObsidian con
etc/mage_obsidian_compatibility.xml: -
web/theme.config.js— opciones de build (ESM). Los tokens van en CSS, no aquÃ: -
web/css/theme.source.css— tus tokens@theme(y cualquier override).
Luego ejecuta --generate y mage-obsidian:build-themes de nuevo. Referencia completa:
Configuración de Compatibilidad y
Configuración del Tema.
Sobrescribir plantillas (Twig)¶
Las plantillas viven en <Vendor>_<Module>/templates/**/*.twig. Para sobrescribir una, recrea la
misma ruta en tu tema — el fallback de Magento resuelve la versión más especÃfica. Por ejemplo, el
tÃtulo de página:
FÃjate en los tokens de diseño aflorando como clases de utilidad (font-display, text-ink). Para
el runtime de Twig, helpers y filtros, consulta Motor Twig y
Helpers y Filtros.
Islas Vue y JavaScript¶
El tema default monta islas Vue interactivas para las partes dinámicas — búsqueda del header,
contadores de carrito / wishlist / comparación, el menú móvil, el switcher de tienda, drawers y
toasts — cada una hidratada de forma diferida para que la página siga siendo rápida. Extiendes el
tema añadiendo o sobrescribiendo componentes y exponiendo los paquetes NPM que necesites (Pinia ya
viene expuesto).
- Añade componentes y scripts bajo
web/— consulta Crear Scripts y Componentes. - Aprende cómo se montan las islas en Islas Vue.
Qué incluye (paridad con Luma)¶
El tema cubre la misma superficie de storefront que Luma, reconstruida en Twig + Vue:
- Chrome: header, footer, navegación, menú móvil, switcher de tienda/moneda.
- Catálogo: listado de categorÃa, navegación por capas, página de detalle de producto, swatches.
- Compra: carrito, checkout, compra instantánea, mensajes de regalo, multishipping.
- Cuenta: login y cuenta de cliente, wishlist, comparación, reseñas, ventas/pedidos.
- Búsqueda: búsqueda rápida con autocompletado.
Próximos pasos¶
-
Temas Compatibles
El mecanismo completo detrás de los temas compatibles: compatibilidad, CSS, config y componentes.
-
Motor Twig
Escribe y sobrescribe plantillas en Twig, con helpers y filtros.
-
Primeros pasos
Instala los componentes y construye un tema desde cero.