Portal IDEA

Noções Básicas sobre a Plataforma Moodle

NOÇÕES BÁSICAS SOBRE A PLATAFORMA MOODLE

Desenvolvimento com Plugins e Temas 

Criando seu Primeiro Plugin

  

O Moodle é reconhecido por sua arquitetura modular, que permite a criação de extensões funcionais conhecidas como plugins. Esses plugins possibilitam a customização da plataforma para atender às demandas específicas de diferentes contextos educacionais, sem a necessidade de modificar o núcleo do sistema (core). Um dos primeiros passos para qualquer desenvolvedor que deseje contribuir com o ecossistema Moodle é aprender a criar seu próprio plugin, especialmente os do tipo block, que são relativamente simples e ideais para iniciantes.

1. Tipos de Plugins no Moodle

O Moodle suporta uma ampla variedade de plugins, cada um projetado para estender funcionalidades específicas da plataforma. Segundo a documentação oficial (MOODLE DEV, 2024), existem mais de 30 tipos distintos de plugins. A seguir, os mais comuns:

  • mod (Activity modules): permitem adicionar novas atividades nos cursos, como fóruns, tarefas ou questionários.
  • block (Blocks): pequenos componentes exibidos nas laterais das páginas, como calendários, alertas ou informações personalizadas.
  • auth (Authentication): definem como os usuários são autenticados (ex: via LDAP, OAuth2, Google).
  • enrol (Enrollment): controlam como os usuários são inscritos em cursos.
  • theme (Themes): definem o layout visual e a identidade da interface gráfica.
  • report (Reports): criam relatórios administrativos ou pedagógicos personalizados.
  • filter (Content filters): manipulam dinamicamente o conteúdo exibido nas páginas.

Para cada tipo, o Moodle define uma estrutura específica de diretórios e arquivos obrigatórios, o que garante uniformidade no desenvolvimento e facilita a manutenção da plataforma.

2. Estrutura Básica de um Plugin de Bloco (Block)

O tipo de plugin mais indicado para um primeiro desenvolvimento é o block. Ele oferece uma maneira simples de inserir conteúdo personalizado em diversas páginas do Moodle, geralmente nas colunas laterais.

2.1 Criando a Estrutura

Para criar um plugin de bloco, o primeiro passo é criar um diretório com nome prefixado por block_ dentro da pasta /blocks/ do Moodle. Por exemplo: block_helloworld.

Dentro desse diretório, os seguintes arquivos são obrigatórios:

  • version.php: define a versão do plugin, sua compatibilidade com o core e número de
  • build.
  • block_helloworld.php: classe principal do plugin.
  • lang/en/block_helloworld.php: define os textos exibidos pelo plugin.
  • db/access.php (opcional): define permissões de acesso.

2.2 Exemplo de Arquivo version.php

<?php

defined('MOODLE_INTERNAL') || die();

$plugin->component = 'block_helloworld';

$plugin->version = 2025061300;

$plugin->requires = 2022041900; // versão mínima do Moodle

$plugin->maturity = MATURITY_STABLE;

$plugin->release = '1.0';

2.3 Exemplo de Classe Principal block_helloworld.php

<?php

class block_helloworld extends block_base {

    public function init() {

        $this->title = get_string('pluginname', 'block_helloworld');

    }

    public function get_content() {

        if ($this->content !== null) {

            return $this->content;

        }

        $this->content = new stdClass;

        $this->content->text = 'Olá, mundo!';

        $this->content->footer = '';

        return $this->content;

    }

}

2.4 Arquivo de Idioma lang/en/block_helloworld.php

<?php

$string['pluginname'] = 'Hello World';

$string['helloworld:addinstance'] = 'Adicionar um novo bloco Hello World';

Essa estrutura mínima já é suficiente para que o bloco seja reconhecido pelo sistema e adicionado a qualquer página do Moodle, via interface administrativa.

3. Criando e Registrando um Plugin Personalizado

Após criar os arquivos básicos, é necessário registrar o plugin no Moodle. Isso é feito ao acessar o site Moodle via navegador. O sistema automaticamente detectará o novo plugin e oferecerá a opção de instalá-lo.

Passos para registro:

1.     Colocar a pasta do plugin (block_helloworld) dentro de /blocks/.

2.     Acessar o Moodle com um administrador via navegador.

3.     O sistema exibirá a tela “Verificação de plugins”.

4.     Confirmar a instalação clicando em “Atualizar base de dados do Moodle”.

5.     O plugin será registrado e estará disponível para uso.

Durante esse processo, o Moodle lê o version.php e cria as entradas correspondentes na base de dados. Caso o plugin tenha permissões definidas no arquivo access.php, elas também serão registradas.

Considerações sobre Boas Práticas

Mesmo ao criar plugins simples, é fundamental seguir as boas práticas de desenvolvimento recomendadas pela comunidade Moodle:

  • Utilizar a API do Moodle para banco de dados, formulários e arquivos.
  • Definir corretamente as permissões de acesso via db/access.php.
  • Adotar os padrões de codificação e comentários definidos no site MoodleDev.
  • Testar o plugin com diferentes perfis de usuário (admin, aluno, professor).
  • Evitar usar funções obsoletas, consultando a documentação oficial.

Além disso, o uso de controle de versão com Git e de ambientes como o Docker pode facilitar o ciclo de testes e distribuição do plugin.

Considerações Finais

A criação de plugins no Moodle é um processo acessível e bem documentado. Iniciar com um plugin do tipo block é uma excelente forma de entrar no ecossistema de desenvolvimento Moodle, por sua estrutura simples e impacto visual imediato. Com o domínio dessa técnica, o desenvolvedor estará apto a criar soluções mais sofisticadas, como módulos de atividade, relatórios personalizados ou integrações com sistemas externos.

A arquitetura modular do Moodle, combinada com seu forte suporte da comunidade open source, transforma a plataforma em um ambiente ideal para inovação educacional e desenvolvimento de soluções específicas.

Referências Bibliográficas

  • MOODLE DEV. Plugin Development. MoodleDev.io. Disponível em: https://moodledev.io/docs/apis/plugin
  • MOODLE DOCS. Blocks Development. Disponível em: https://moodledev.io/docs/apis/blocks
  • ITALIANO, Marco A. Programando com Moodle: Desenvolvendo plugins para o maior LMS open source. São Paulo: Novatec, 2020.
  • CACCIA, Marcelo. Desenvolvimento de sistemas para EAD com Moodle. Rio de Janeiro: Ciência Moderna, 2019.
  • GITHUB. Moodle Git Repository. Disponível em: https://github.com/moodle/moodle


Trabalhando com Temas e Layouts no Moodle
Introdução ao Sistema de Temas, Mustache, CSS e Temas Filhos

 

O Moodle oferece um sistema de personalização visual robusto, que permite adaptar a aparência da plataforma às necessidades estéticas, funcionais e institucionais de qualquer organização. A personalização de temas e layouts pode variar desde simples alterações de cores e logotipos até a construção de interfaces complexas e responsivas. Esse processo é facilitado por um sistema de templates baseado em Mustache, pelo uso de SCSS (uma extensão do CSS) e pela estrutura modular que permite criar temas filhos com facilidade.

1. Introdução ao Sistema de Temas do Moodle

O sistema de temas do Moodle é responsável por definir a aparência gráfica da plataforma, incluindo cores, fontes, espaçamentos, posicionamento de blocos, menus, botões e todos os elementos visuais que compõem a interface do

usuário.

1.1 Como os Temas Funcionam

Os temas são instalados dentro do diretório /theme/ e, como os demais plugins do Moodle, seguem uma estrutura padronizada. Cada tema é um pacote independente com seus próprios arquivos de configuração, estilo e templates. O Moodle já vem com temas nativos, como boost, classic e lambda, sendo o tema boost o padrão desde a versão 3.2.

A principal característica do sistema de temas do Moodle é sua separação entre lógica de apresentação (via arquivos Mustache) e estilização (via SCSS/CSS), o que melhora a manutenção e evita conflitos com o core.

1.2 Arquivos Comuns em um Tema

  • config.php: registra o tema no Moodle e define suas configurações.
  • version.php: indica a versão e compatibilidade do tema.
  • /templates/: arquivos .mustache com os layouts HTML.
  • /style/: arquivos .scss (ou .css) para definição de estilos.
  • /lang/: strings e traduções específicas do tema.
  • /classes/: pode conter classes PHP para lógica adicional.

2. Modificando o Layout com Mustache e CSS

2.1 Templates Mustache

O Moodle adota o sistema de templates Mustache para organizar o HTML dos temas. Mustache é uma linguagem de template logic-less (sem lógica complexa), que usa delimitadores como {{}} para inserir variáveis e incluir outros templates.

Exemplo básico de um template Mustache:

<div class="user-welcome">

  <h2>Bem-vindo, {{username}}</h2>

  {{#hasnotifications}}

    <p>Você tem novas notificações!</p>

  {{/hasnotifications}}

</div>

Esses templates são utilizados nos arquivos da pasta /templates/ e são renderizados pelo Moodle automaticamente de acordo com o contexto da página.

2.2 CSS e SCSS

Os temas modernos do Moodle utilizam SCSS (Sassy CSS), que é um pré-processador que estende o CSS com funcionalidades como variáveis, aninhamento e mixins. Isso permite maior organização e reutilização de estilos.

Dentro do diretório /style/, geralmente existem arquivos como:

  • variables.scss: define variáveis de cores, fontes e espaçamentos.
  • custom.scss: inclui personalizações visuais.
  • moodle.scss: importa os estilos principais do Moodle (herdados do tema Boost).

Um exemplo de modificação simples via SCSS:

$brand-primary: #006699;

body {

  font-family: 'Open Sans', sans-serif;

  background-color: #f9f9f9;

}

As modificações podem ser testadas localmente com cache desabilitado e compiladas automaticamente pelo Moodle durante a execução. O sistema de temas também utiliza o

Bootstrap 4, facilitando a criação de interfaces responsivas.

3. Criando Temas Filhos no Moodle

Uma das abordagens mais recomendadas para personalização de aparência no Moodle é a criação de temas filhos (child themes). Um tema filho herda todas as funcionalidades de um tema pai, mas permite sobrescrever templates, variáveis e estilos específicos, sem alterar diretamente o tema base.

3.1 Benefícios do Tema Filho

  • Reduz o risco de incompatibilidade com atualizações do tema pai.
  • Evita alterações diretas em temas nativos.
  • Permite personalizações específicas mantendo herança de estrutura e lógica.

3.2 Estrutura de um Tema Filho

Para criar um tema filho, é necessário:

1.     Criar uma pasta em /theme/ com o nome do tema (ex: mytheme).

2.     Criar um arquivo config.php com a herança do tema pai:

$THEME->name = 'mytheme';

$THEME->parents = ['boost'];

$THEME->sheets = [];

$THEME->editor_sheets = [];

$THEME->scss = function($theme) {

    return theme_mytheme_get_main_scss_content($theme);

};

$THEME->layouts = [...]; // Pode herdar ou sobrescrever layouts

3.     Criar o arquivo version.php para registrar o tema.

4.     Criar um arquivo lib.php com a função de carregamento de SCSS:

function theme_mytheme_get_main_scss_content($theme) {

    return file_get_contents(__DIR__ . '/style/custom.scss');

}

5.     Adicionar arquivos .mustache e .scss conforme necessário, sobrescrevendo apenas os elementos desejados.

3.3 Ativando o Tema

Após a criação, o tema pode ser ativado no painel administrativo:

  • Acessar: Administração do site > Aparência > Tema > Seletor de tema
  • Selecionar o tema filho criado
  • Limpar o cache do tema para ver as alterações

Considerações Finais

O sistema de temas do Moodle é uma ferramenta poderosa para alinhar a plataforma aos padrões visuais e à identidade institucional de cada organização. Com a utilização de Mustache e SCSS, o Moodle proporciona flexibilidade, clareza e robustez na personalização de layouts e estilos.

A criação de temas filhos é a abordagem mais indicada para realizar personalizações duradouras e seguras, pois separa o código próprio da estrutura padrão, facilitando a manutenção e as futuras atualizações da plataforma.

Dominar a criação de temas e layouts permite que desenvolvedores e designers criem experiências mais envolventes, acessíveis e funcionais para os usuários do Moodle.

Referências Bibliográficas

  • MOODLE DEV. Themes and Styling.
  • MoodleDev.io. Disponível em: https://moodledev.io/docs/themes
  • MOODLE HQ. Boost Theme Documentation. Disponível em: https://docs.moodle.org/dev/Boost_theme
  • ITALIANO, Marco A. Programando com Moodle: Desenvolvendo plugins para o maior LMS open source. São Paulo: Novatec, 2020.
  • MUSTACHE. Mustache Template System. Disponível em: https://mustache.github.io/
  • CACCIA, Marcelo. Desenvolvimento de sistemas para EAD com Moodle. Rio de Janeiro: Ciência Moderna, 2019.


Hooks e Eventos no Moodle
Eventos, Observadores, Override de Funcionalidades e Boas Práticas de Extensão

 

O Moodle, como plataforma modular e extensível, oferece mecanismos poderosos para que desenvolvedores personalizem e ampliem seu comportamento sem modificar diretamente o código-fonte do núcleo (core). Entre esses mecanismos estão os eventos, observadores e os hooks, que permitem reagir a ações realizadas na plataforma ou alterar seu funcionamento de maneira controlada. Esse modelo de desenvolvimento é fundamental para garantir compatibilidade com futuras atualizações e preservar a integridade do sistema.

1. Eventos e Observadores no Moodle

1.1 Conceito de Evento

Um evento no Moodle representa uma ação relevante que ocorreu dentro do sistema, como a conclusão de um curso, a submissão de uma tarefa ou o login de um usuário. Cada evento é emitido por meio da classe \core\event\base ou uma de suas extensões, contendo informações como o tipo de evento, o contexto em que ocorreu, e dados do usuário envolvido.

Exemplo de uso interno no Moodle:

\core\event\user_loggedin::create([

    'objectid' => $user->id,

    'relateduserid' => $user->id,

    'context' => context_system::instance()

])->trigger();

1.2 Observadores de Eventos

Os observadores são componentes que escutam os eventos e executam ações quando eles são disparados. Eles são declarados pelos plugins ou pelo core em um arquivo chamado db/events.php.

Exemplo de declaração de observador:

$observers = [

    [

        'eventname' => '\core\event\user_loggedin',

        'callback' => 'local_mymodule_observer::on_user_loggedin'

    ]

];

Nesse exemplo, toda vez que um usuário fizer login, o método on_user_loggedin() da classe local_mymodule_observer será executado.

A classe de observadores deve ser definida, normalmente, em classes/observer.php:

class local_mymodule_observer {

    public static function on_user_loggedin($event) {

        $userid =

$event->relateduserid;

        // lógica adicional aqui

    }

}

Esse sistema permite acoplar funcionalidades ao comportamento do Moodle sem a necessidade de alterar os arquivos principais.

2. Hooks de Plugins e Override de Funcionalidades

2.1 O Que São Hooks

Hooks são pontos definidos no código do Moodle onde é possível injetar comportamento adicional por meio de funções nomeadas ou callbacks específicas. Eles permitem alterar ou estender fluxos internos do sistema, sendo particularmente úteis para modificar o comportamento de módulos ou de interações de interface.

Alguns exemplos de hooks no Moodle incluem:

  • pluginfile() para manipular arquivos;
  • extend_navigation() para adicionar itens ao menu;
  • cron() para definir tarefas agendadas.

2.2 Override de Funcionalidades

Em alguns casos, é necessário sobrescrever funcionalidades já existentes. O Moodle permite isso de forma limitada e controlada, principalmente em:

  • Temas: podem sobrescrever templates Mustache, classes CSS ou arquivos JavaScript.
  • Classes PHP: por meio de autoloader ou substituição parcial, mas com cautela.
  • Formulários: usando callbacks para estender ou modificar formulários existentes.

Para sobrescrever um template visual, por exemplo, basta criar um arquivo com o mesmo nome do template em theme/seutema/templates/core/. O Moodle utilizará a versão do tema ao invés da original.

Para modificar a navegação principal de cursos:

function local_seuplgin_extend_navigation_course($navigation, $course, $context) {

    $node = $navigation->add('Meu item personalizado');

    $node->action = new moodle_url('/local/seuplgin/index.php');

}

Esse tipo de hook é amplamente utilizado por plugins para inserir menus, atalhos e novos recursos de navegação.

3. Boas Práticas ao Estender Funcionalidades

Ao trabalhar com eventos e hooks no Moodle, algumas boas práticas devem ser observadas para garantir segurança, desempenho e compatibilidade:

3.1 Não Modificar o Core

Alterações diretas nos arquivos do núcleo tornam a plataforma vulnerável a falhas em futuras atualizações e são desaconselhadas. Toda extensão deve ser feita por meio de plugins, observadores ou temas.

3.2 Usar APIs Oficiais

O Moodle fornece APIs robustas para manipulação de banco de dados, usuários, arquivos, permissões e mensagens. Usar essas interfaces é essencial para garantir que a lógica esteja integrada corretamente ao restante do sistema.

3.3 Isolar Lógica de Observadores

Os

observadores devem ser leves e eficientes. Em vez de executar operações pesadas diretamente, é melhor agendar tarefas assíncronas (\core\task\scheduled_task) ou armazenar os dados em fila para processamento posterior.

3.4 Testar com Diversos Perfis

Extensões devem ser testadas com diferentes perfis de usuário (administrador, professor, estudante) para garantir que os contextos e permissões estão sendo respeitados.

3.5 Documentar e Versão dos Plugins

Cada plugin deve conter um arquivo version.php bem definido, com número de versão, compatibilidade e informações de liberação. Isso facilita o gerenciamento e atualização dos plugins.

Considerações Finais

O sistema de eventos e hooks do Moodle oferece uma arquitetura sólida para estender suas funcionalidades de forma limpa, segura e escalável. Por meio de observadores, desenvolvedores podem reagir a eventos importantes do sistema; com os hooks, é possível inserir ou modificar comportamentos em pontos estratégicos. Essas ferramentas formam a base para o desenvolvimento de plugins sofisticados e personalizados, mantendo a integridade do núcleo da plataforma.

Adotar boas práticas de desenvolvimento, seguir os padrões recomendados pela comunidade e utilizar as APIs oficiais são atitudes que garantem a qualidade e a sustentabilidade das soluções desenvolvidas no ecossistema Moodle.

Referências Bibliográficas

  • MOODLE DEV. Events API. MoodleDev.io. Disponível em: https://moodledev.io/docs/apis/core/events
  • MOODLE DEV. Plugin API Reference. Disponível em: https://moodledev.io/docs/apis/plugin
  • ITALIANO, Marco A. Programando com Moodle: Desenvolvendo plugins para o maior LMS open source. São Paulo: Novatec, 2020.
  • CACCIA, Marcelo. Desenvolvimento de sistemas para EAD com Moodle. Rio de Janeiro: Ciência Moderna, 2019.
  • GITHUB. Moodle Git Repository. Disponível em: https://github.com/moodle/moodle

Parte superior do formulário

Parte inferior do formulário

Quer acesso gratuito a mais materiais como este?

Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!

Matricule-se Agora