Crear un Plugin
Esta guía explica cómo crear un plugin básico para Chamilo. Para más detalles, consulta la página del wiki sobre desarrollo de plugins.
Paso 1: Crear el Directorio del Plugin
Crea un directorio en public/plugin/. El nombre del directorio debe coincidir con el identificador de tu plugin:
public/plugin/MyPlugin/Paso 2: Definir la Clase del Plugin
Crea src/MyPluginPlugin.php. La clase extiende Plugin y sigue el patrón singleton:
<?php
class MyPluginPlugin extends Plugin
{
protected function __construct()
{
$settings = [
'tool_enable' => 'boolean',
'api_key' => 'text',
];
parent::__construct('1.0', 'Your Name', $settings);
}
public static function create(): static
{
static $instance = null;
return $instance ??= new static();
}
}Tipos de Configuración Disponibles
boolean
Casilla de verificación on/off
text
Entrada de texto de una línea
select
Menú desplegable (proporciona un arreglo options)
wysiwyg
Editor de texto enriquecido
html
Campo de HTML sin procesar
checkbox
Casilla de verificación
user
Selector de usuario
Para configuraciones de tipo select:
Accede a las configuraciones en tiempo de ejecución:
Paso 3: Crear plugin.php
El archivo plugin.php en la raíz del plugin es obligatorio. Debe asignar $plugin_info:
Paso 4: Crear Scripts de Instalación y Desinstalación
install.php:
uninstall.php:
Implementa la creación/eliminación del esquema real dentro de la clase usando SchemaTool de Doctrine.
Paso 5: Añadir Traducciones
Crea archivos de idioma en lang/ usando códigos de locale (por ejemplo, en_US.php, fr_FR.php, es_ES.php). El archivo de respaldo es en_US.php.
Accede a las traducciones mediante $plugin->get_lang('key').
Paso 6: Inyectar Contenido mediante Regiones de Visualización
Los plugins pueden inyectar HTML en 18 regiones predefinidas del frontend de Vue. Sobrescribe renderRegion() en tu clase:
Las regiones disponibles incluyen: content_bottom, content_top, course_tool_plugin, footer_center, footer_left, footer_right, header_center, header_left, header_main, header_right, login_bottom, login_top, main_bottom, main_top, menu_administrator, menu_bottom, menu_top, pre_footer.
Paso 7: Reaccionar a Eventos de la Plataforma (Opcional)
Los plugins pueden reaccionar a eventos de la plataforma usando suscriptores de eventos de Symfony. Crea un archivo que termine en EventSubscriber.php dentro de src/EventSubscriber/ — se registra automáticamente mediante PluginEventSubscriberPass.
Consulta src/CoreBundle/Event/Events.php para ver la lista completa de eventos disponibles (usuario, curso, sesión, LP, ejercicio, portafolio, autenticación y más).
Paso 8: Ganchos del Ciclo de Vida
Sobrescribe estos métodos en tu clase de plugin para responder a las acciones de la plataforma:
install()
El plugin es activado
uninstall()
El plugin es eliminado
performActionsAfterConfigure()
El administrador guarda el formulario de configuración
course_settings_updated(array $values)
Cambian los ajustes a nivel de curso
validateCourseSetting(string $variable)
Se guarda un ajuste de curso (devuelve false para rechazar)
doWhenDeletingUser(int $userId)
Se elimina un usuario
doWhenDeletingCourse(int $courseId)
Se elimina un curso
doWhenDeletingSession(int $sessionId)
Se elimina una sesión
Paso 9: Activar
Inicia sesión como administrador, navega a Gestionar plugins, encuentra tu plugin y haz clic en Activar.
Consejos
Sigue los plugins existentes como ejemplos —
public/plugin/HelloWorld/ypublic/plugin/TopLinks/son buenas referencias simplesUsa traducciones — Siempre utiliza el sistema
lang/para los textos visibles al usuarioLimpia al desinstalar — Elimina tablas de base de datos y configuraciones en el script de desinstalación
Verifica el estado de habilitación — En los suscriptores de eventos, siempre llama a
$this->plugin->isEnabled()antes de ejecutar la lógica
Última actualización
¿Te fue útil?