Como muchos de ustedes en este hilo, he estado buscando una forma ligera de usar Discourse de forma nativa como LMS. Considero que las plataformas LMS dedicadas son demasiado pesadas, pero la “desvanecimiento de notificaciones” predeterminada de Discourse (donde los temas más antiguos dejan de aparecer como “no leídos” para los usuarios nuevos) dificulta el seguimiento del progreso del curso.
Para satisfacer mi propia necesidad, creé una solución sencilla combinando configuraciones de categorías, un pequeño plugin de backend y un componente de tema.
Así es como lo configuré, ¡y aquí está el código de código abierto que pueden usar para replicarlo!
El concepto básico: Discourse como LMS
Para que esto funcione, utilizo las funciones estándar de Discourse combinadas con el plugin oficial Discourse Doc Categories:
- Curso = Categoría: Cada curso tiene su propia categoría.
- Lección = Tema: Cada lección es un tema dentro de esa categoría.
- Permisos: Los miembros pueden responder a las lecciones (para hacer preguntas), pero solo el personal puede crear nuevos temas.
- Ordenamiento: El orden de las lecciones se fija por la fecha de creación. (Consejo: Esto requiere un poco de visión de futuro al publicar las lecciones, o pueden usar la consola de Rails para retroceder rápidamente los tiempos de creación de los temas y forzar el ordenamiento correcto).
- Plan de estudios: Utilizo el plugin Discourse Doc Categories para designar un “Tema Índice”. Este tema índice actúa como el plan de estudios/rastreador del curso y muestra un hermoso esquema en la barra lateral cuando los usuarios ingresan al curso.
La pieza que falta: Seguimiento real del progreso
El problema con la configuración anterior es que, cuando un nuevo estudiante se une, los temas de lecciones más antiguos no aparecen como “no leídos”, por lo que no tienen forma de rastrear visualmente su progreso.
Para solucionar esto, creé un plugin de backend que consulta directamente la tabla de base de datos TopicUser para obtener el estado de lectura histórico real, y un componente de tema de frontend que transforma la barra lateral estándar de Discourse en un rastreador de progreso LMS en tiempo real.
1. Insignias de progreso en la barra lateral principal
El componente de tema reemplaza los puntos azules de notificación estándar con indicadores de progreso [leído / total] para sus categorías de cursos.
2. Marcas de verificación de finalización de lección
Cuando un usuario hace clic en un curso, el plugin Docs muestra el plan de estudios. Mi componente de tema inyecta marcas de verificación de éxito (fa-check) junto a las lecciones específicas que el usuario ha terminado de leer.
3. Finalización del curso
Una vez que un usuario lee cada tema de la categoría, la insignia de progreso de la barra lateral se transforma automáticamente en una marca de verificación de finalización satisfactoria.
Cómo instalarlo
Dado que esto requiere omitir la caché de notificaciones estándar de Discourse, deben instalar tanto el plugin de backend como el componente de tema de frontend.
Paso 1: Instalar el requisito previo
Asegúrese de tener instalado y activo el plugin oficial Discourse Doc Categories. Mi plugin apunta específicamente solo a las categorías que tienen un Tema Índice configurado.
Paso 2: Instalar el plugin de API de backend
Agregue esto a su app.yml debajo de docker_manager y reconstruya su contenedor. Esto proporciona un punto final de API ultrarrápido para los estados de lectura.
Enlace al repositorio: https://github.com/zsviczian/discourse-course-progress**
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/zsviczian/discourse-course-progress.git
Paso 3: Instalar el componente de tema de interfaz de usuario
Instálelo directamente desde su navegador web en Administración > Personalizar > Temas > Instalar > Desde un repositorio Git.
Enlace al repositorio: https://github.com/zsviczian/discourse-course-progress-theme
Espero que esto ayude a otros que están intentando crear cursos impulsados por la comunidad sin la complejidad de una plataforma LMS separada. ¡Háganmelo saber si terminan usándolo!



