Site

Temas

A página pública React é lida na pasta do tema de system.theme. Trocar o tema troca a pasta. Não existe fallback para themes/default/react.

⚠️PHP e React não usam a mesma regra

Views .mucrm.php ainda caem no tema default quando o arquivo não existe no tema ativo. A página do site em React não faz isso. A página de plugin nasce em app/modules/{plugin}/views/react e o tema só entra quando existe themes/{tema}/react/modules/{plugin}/.


Tema público

// config/system.php
return [
    'theme' => 'delta',
];

Com theme = delta, a Engine procura:

  • themes/delta/react/pages/{Nome}.jsx ou .tsx para página do site
  • themes/delta/react/layouts/Public.jsx para a casca das páginas sem layout próprio
  • themes/delta/react/modules/{plugin}/ quando o tema quiser substituir a página do plugin, sem pasta views
themes/delta/react/pages/Home.jsx
themes/delta/react/layouts/Public.jsx

themes/novo/react/pages/Home.jsx
themes/novo/react/layouts/Public.jsx

Um tema só em PHP não tem a pasta react/. As rotas dele seguem com $this->view(). Um tema pode misturar os dois: rotas PHP e rotas que chamam inertia().


Painel

O layout do handler escolhe o tema compartilhado. panels.admin._layouts.app lê sóthemes/panels/admin/react, mesmo que o site público esteja em outro tema.

class dashboard_handler extends handler
{
    protected string $layout = 'panels.admin._layouts.app';

    public function index()
    {
        return $this->inertia('Dashboard', [
            'online' => $players,
        ]);
    }
}

Sem themes/panels/admin/react/app.jsx, o painel continua nas views .mucrm.php.


Tema novo para o cliente

  1. Coloque as páginas em themes/novo/react/pages e a casca em layouts/Public.jsx.
  2. Aponte system.theme para novo.
  3. Rode npm run build e envie public/build junto com o tema.