Supongamos que queremos desarrollar un sitio web, basado en Drupal, para ofrecer y comercializar cursos. Esto incluye desde la promoción hasta la emisión de certificados, pasando por supuesto por la toma del curso.

Course es una herramienta simple y útil, basada en otros módulos de Drupal (como Quiz, Books, Webforms, Views, Rules, etc.), que nos permite estructurar y gestionar diferentes tipos de cursos, dando soluciones a todo el circuito de uso por parte del usuario, desde la promoción inicial del curso (integrándolo a todas las herramientas de publicación de Drupal) hasta la entrega automatizada de certificados.

Integración con Commerce

El módulo Course se integra a Rules y existen acciones pre-definidas que permiten enrolar a un usuario en un Curso. En caso de que las reglas pre-existentes no se ajusten exactamente a nuestro caso, siempre podemos definir nuevas reglas. Esto implica que Rules constituye un excelente puente para conectar Commerce con Course. Adicionalmente.

El módulo Course permite tomar cualquier nodo (por ejemplo, nodos que representen actualmente cursos) y definirlo (mediante la edición del mismo) como un curso (agregando esta acción todas las opciones del módulo Course).

Alternativamente (por ejemplo, si la estructura actual es muy compleja), podríamos migrar el contenido de los cursos actuales a nuevos nodos (definidos por el módulo Course).
Course funciona con nodos simples que pueden ser definidos como Productos de Commerce y, por lo tanto, pueden ser expuestos directamente a la venta mediante el Display de Commerce.

Cómo estructurar un curso

El contenido de un nodo Course puede estructurarse mediante diversos elementos de una manera tan flexible que cualquier nodo puede ser parte de esos elementos. La propuesta base del módulo consiste en organizar un curso como un conjunto de pares Books/Quiz, es decir, bloques de contenidos (un árbol nodos organizados por Book) y un Quiz que permita pasar al próximo bloque de contenidos.

Esto significa que podemos organizar nuestros cursos de diversas maneras. Mediante varios Books organizados dentro del nodo de tipo Course. O bien mediante varios nodos de tipo Courses con menos Books dentro. En el caso de que queramos comercializar nuestros cursos esta distinción se vuelve importante; aunque sería posible manejarlo de las dos formas, posiblemente la segunda resulta de mayor practicidad.

En el caso de seguir este segundo enfoque, existe un módulo que resulta muy útil llamado Course Requirements, aunque al día de la fecha no cuenta con un nivel adecuado de madurez y no tiene muchos usuarios, lo que significa un riesgo de discontinuación en el futuro: https://www.drupal.org/project/course_requirements. Como aspecto mitigador de lo anterior, es un módulo muy pequeño y, por lo tanto, manejable por un desarrollador.

Llegado el caso de una necesidad mayor, estas relaciones podrían llegar a establecer también mediante Rules.

Relaciones entre los cursos

Asumiendo el uso de Course Requirements y la comercialización de Cursos, debemos pensar cómo informaremos al usuario interesado en el curso a la hora de la comercialización. Para ello se sugiere que:

  • El usuario será advertido de las dependencias entre Cursos que puedan existir, mediante un texto destacado, al momento de comprar el Curso.
  • El usuario (que podría ser anónimo) podrá comprar el Curso, pero si al intentar tomarlo no cumple con los requerimientos no podrá hacerlo.

Para simplificar todo el proceso (para el usuario final y para la solución técnica), se recomienda contemplar la venta de Cursos únicamente (y no de los sub-cursos por separado). La propuesta es tomar un curso (eventualmente grande) y organizarlos en varios cursos más pequeños (con dependencias):
- Curso sobre algo 1
- Curso sobre algo 2
- Curso sobre algo 3

Alternativamente (para tener cursos y sub-cursos independientes), puede explorarse el módulo Course Relationships, pero da la impresión de sumar complejidad y riesgos con escasos beneficios https://www.drupal.org/project/course_relationships