Modelos Twig
Chamilo utiliza Twig para páginas renderizadas no lado do servidor. Os modelos estão localizados em src/CoreBundle/Resources/views/ e são referenciados com o prefixo de namespace @ChamiloCore/ (por exemplo, @ChamiloCore/Layout/base-layout.html.twig).
Não há um diretório de nível superior templates/ — todos os modelos Twig estão sob src/CoreBundle/Resources/views/.
Como Twig e Vue Coexistem
A maioria das páginas segue este fluxo:
Um controlador Symfony renderiza um modelo Twig que estende um layout.
O layout inclui
vue_setup.html.twig, que emite<div id="app">e injeta variáveis globais de tempo de execução (window.user,window.breadcrumb, etc.) por meio devue_js_setup.html.twig.Vue é montado em
#appe gerencia toda a renderização da interface do usuário dentro desse elemento.O aplicativo Vue se comunica com o backend por meio da API REST.
Para páginas legadas que ainda não foram migradas para Vue, o Symfony renderiza o HTML completo da página via Twig e o conteúdo é colocado dentro de #sectionMainContent. Vue ainda é montado (fornecendo a barra lateral e a barra superior), mas a área de conteúdo principal é HTML renderizado no servidor.
Modelos de Layout
Todos os layouts estendem @ChamiloCore/Layout/base-layout.html.twig, que fornece a estrutura <html>, <head> e <body>. Variantes de layout disponíveis:
Layout/base-layout.html.twig
Modelo raiz — estrutura <html>, importa Macros, emite <head> e <body>
Layout/layout.html.twig
Layout completo padrão com barra lateral, barra superior e área de conteúdo
Layout/layout_one_col.html.twig
Layout de uma coluna (sem barra lateral)
Layout/layout_two_col.html.twig
Layout de duas colunas
Layout/layout_content.html.twig
Envoltório apenas para conteúdo
Layout/layout_empty.html.twig
Layout vazio com mínimo de elementos visuais
Layout/no_layout.html.twig
Sem cabeçalho/rodapé; conteúdo vai diretamente dentro de <body>
Layout/no_layout_scorm.html.twig
Layout básico para quadros de conteúdo SCORM
Layout/blank.html.twig
Página completamente em branco
Layout/skill_layout.html.twig
Layout para a página de roda de habilidades
Partes-Chave
Layout/head.html.twig
Conteúdo de <head>: meta tags, todas as entradas CSS do Encore, colors.css do tema, entradas JS legadas, tags OpenGraph/Twitter
Layout/foot.html.twig
Fim do corpo: ponto de entrada JS do Vue, injeção de tracking.footer_extra_content
Layout/vue_setup.html.twig
Emite <div id="app"> e inclui vue_js_setup.html.twig
Layout/vue_js_setup.html.twig
Injeta window.user, window.breadcrumb, window.languages, etc.
Layout/cookie_banner.html.twig
Banner de consentimento de cookies GDPR
Layout/footer.html.twig
Barra de rodapé da página
Layout/course_navigation.html.twig
Migalha de navegação de ferramentas do curso
Integração com Webpack Encore
head.html.twig carrega CSS para todas as entradas; foot.html.twig carrega o pacote JS do Vue:
Entradas JS legadas (legacy_app, legacy_lp, etc.) são carregadas em <head> porque páginas PHP legadas dependem de sua disponibilidade antes que o DOM esteja pronto.
Macros
Macros Twig reutilizáveis estão em Macros/ e são importados no topo de base-layout.html.twig:
Macros/box.html.twig
Auxiliares para caixas de conteúdo
Macros/actions.html.twig
Renderização de botões de ação
Macros/buttons.html.twig
Auxiliares HTML para botões
Macros/headers.html.twig
Auxiliares para cabeçalhos de página
Macros/image.html.twig
Auxiliares para renderização de imagens
Macros/modals.html.twig
Auxiliares para diálogos modais
Uso dentro de qualquer modelo que estenda base-layout.html.twig:
Modelos Vue Personalizados
Chamilo suporta substituições de páginas Vue por instalação por meio da variável de ambiente APP_CUSTOM_VUE_TEMPLATE. Quando definida, a construção do Webpack expõe uma constante ENV_CUSTOM_VUE_TEMPLATE via DefinePlugin, e o roteador Vue importa condicionalmente componentes de substituição de var/vue_templates/.
Localizações atuais de substituição:
Apenas os arquivos presentes em var/vue_templates/ são substituídos — todas as outras páginas e componentes usam os originais do núcleo.
Referência de Funções Twig
Funções Twig principais disponíveis em todos os modelos (registradas em ChamiloExtension):
chamilo_settings_get('ns.key')
Ler uma configuração da plataforma
chamilo_settings_has('ns.key')
Verificar se uma configuração existe
chamilo_settings_all()
Obter todas as configurações como um array
theme_asset('path')
URL para um recurso no tema ativo
theme_asset_link_tag('path')
Tag <link> para um arquivo CSS do tema
theme_asset_script_tag('path')
Tag <script> para um arquivo JS do tema
theme_asset_base64('path')
URI de dados Base64 para um recurso do tema
theme_logo('header'|'email')
URL para o logotipo preferido
is_allowed_to_edit(...)
Auxiliar de verificação de permissão
Última atualização
Isto foi útil?