miércoles, 2 de marzo de 2011

Poner un curso en diferentes categorías

En Moodle resulta útil organizar los cursos por categorías. Sin embargo, en ocasiones se requiere colocar una única instancia de un curso en diferentes categorías.
Es decir, que una única instancia de un curso se encuentre disponible en categorías diferentes, por ejemplo:
Categoría 1 -> Curso A
Categoría 2 -> Curso A

Aclaración: el "Curso A" es exactamente el mismo en la Categoría 1 y 2, donde contiene los mismos docentes, estudiantes, actividades, foros, etc.

Una de las limitaciones de Moodle[1, 3] es que podemos poner un curso en sólo una categoría. Sin embargo, existen algunas opciones:
  1. Se puede crear un curso en una categoría, duplicarlo, y subir la copia dentro de otra categoría. Esta opción tiene la desventaja de requerir que se administren dos cursos separados. Los estudiantes podrían confundirse en el curso que están inscriptos.
  2. Se puede crear un curso en una categoría, y entonces crear un curso con el mismo nombre en la segunda categoría. Sin embargo, se pondrá una única cosa en el segundo curso: un enlace al verdadero curso con el que el usuario podrá dirigirse al verdadero curso.
  3. Se puede crear un curso en una categoría, y entonces crear un curso con el mismo nombre en la segunda categoría. En lugar de que el usuario se rediriga manulamente del segundo curso al verdadero curso en otra categoría, lo que haremos es que la redirección[2] sea realizada en forma automática y transparente al usuario por el Servidor Apache.
Este última opción es la que trataremos en cómo llevar adelante.

Al momento de crear cada curso Moodle le asigna un único identificador al mismo. Por ejemplo:

Categoría 1 -> Curso A
equivale al enlace http://myMoodleSite/course/view.php?id=278

Categoría 2 -> Curso A
equivale al enlace http://myMoodleSite/course/view.php?id=727

Sea el primer enlace el que conduce hacia el verdadero curso, es decir
http://myMoodleSite/course/view.php?id=278.

Entonces cuando sea soliticado el enlace http://myMoodleSite/course/view.php?id=727 deberemos redireccionarlo hacia el primero. Esto lo haremos desde el Servidor Apache.

En el archivo de configuración (/etc/httpd/conf/httpd.conf) de Apache donde tengamos definido nuestro Virtual Host podremos indicar este redireccionamiento:

...
RewriteEngine on
AllowOverride All
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} ^/course/view.php$
RewriteCond %{QUERY_STRING} ^id=727$
RewriteRule ^.*$ http://myMoodleSite/course/view.php?id=278 [L,R=301]
...


De esta manera podremos tener una serie de reglas que redirigan de forma automática y transparente al usuario al verdadero curso.
Las reglas de rescritura responden a un orden de prioridad, y una vez que se cumple la primera con la opción L se le indica que no continúe verificando el listado.


Nota: también es posible ubicar estas redirecciones en el archivo .htaccess

Enlaces:
  1. http://moodle.org/mod/forum/discuss.php?d=169925#p745499
  2. http://stackoverflow.com/questions/1260632/apache-redirect-301-fails-when-using-get-parameters-such-as-blah
  3. Libro: Moodle - Elearning Course Development - (sección) Putting a Course into Several Categories.

2 comentarios:

  1. Tengo este problema pero con Moodle 2, ¿ya es posible hacer eso?

    Gracias de antemano,
    saludos.

    ResponderEliminar
  2. Hola Moisés, no es posible aún en Moodle 2 (hasta donde conozco) resolver esto. Espero te sea de ayuda el blog.

    Abrazos!

    ResponderEliminar