First Commit

This commit is contained in:
marco
2026-09-01 10:46:29 -03:00
commit bf96b77e9c
10000 changed files with 3508600 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# Sistema de Temas e Customizer (Arquitetura)
Este documento detalha o funcionamento técnico do sistema de temas do SysCMS, incluindo a herança de templates e o motor de personalização dinâmica.
## 1. Arquitetura de Herança (Template Hierarchy)
O SysCMS utiliza um motor de busca de arquivos em camadas para permitir a máxima flexibilidade sem duplicidade de código:
1. **Tema Ativo (`themes/{active}/`)**: Prioridade máxima.
2. **Tema Pai (`themes/{parent}/`)**: Se o tema ativo tiver a tag `Template` no seu `style.css`.
3. **Módulos (`modules/{module}/views/`)**: Fallback automático para as views padrão do sistema.
4. **Templates Globais (`templates/`)**: Fallback para layouts e componentes comuns.
## 2. Overrides de Módulos
Para sobrescrever a visualização de um módulo (ex: `index`), o tema deve replicar a estrutura interna do módulo:
`themes/{tema}/modules/{nome_do_modulo}/views/{template}.twig`
Isso permite que um tema mude apenas partes específicas de um módulo sem afetar sua lógica de controle.
## 3. O Personalizador (Customizer)
O Customizer é alimentado por um arquivo JSON e armazena os valores no banco de dados.
### Fluxo de Dados:
1. **Definição:** O tema declara campos no arquivo `customizer.json`.
2. **Gestão:** O administrador altera os valores em `Sistema > Temas > Personalizar`.
3. **Persistência:** Os valores são salvos na tabela `system_config` com a chave `theme_settings_{slug_do_tema}`.
4. **Injeção:** O `Kernel\View.php` lê esses valores e os injeta na variável global `theme_settings` em todas as views Twig.
### Tipos de Campos Suportados:
- `color`: Seletor de cores hexadecimal.
- `text`: Campo de texto simples.
- `switch`: Interruptor booleano (on/off).
- `select`: Menu suspenso com opções pré-definidas.
## 4. Assets e URLs Dinâmicas
- Use `theme_url()` para carregar arquivos CSS/JS/Imagens do tema. Ele resolverá automaticamente o caminho correto considerando a herança (Child > Parent).
- Use `asset_url()` para arquivos globais na pasta `/public/assets`.
## 5. Diretrizes para Desenvolvedores (IA)
- **Sempre verifique o tema ativo:** Antes de modificar qualquer arquivo em `/modules/`, verifique se o usuário deseja que a mudança seja global ou apenas para o tema atual.
- **Não altere o Kernel para novos temas:** O sistema de temas já é genérico. Novas funcionalidades de temas devem ser implementadas via `customizer.json` e lógica de template.
- **Child Themes:** Ao criar temas derivados, utilize a tag `Template:` no `style.css` para manter o código limpo e herdar funcionalidades do tema base.