Intégration Moodle : modifier la configuration des blocs sur les pages de cours

Aujourd’hui, un article présentant la méthode permettant de modifier la configuration des blocs sur toutes les pages de cours d’une plateforme Moodle. En effet, il est facile, pour une seule page de cours, de se mettre en mode édition et de modifier la mise en page des blocs. Mais, qu’en est-il si l’on souhaite modifier la mise en place de blocs pour tout le LMS et avoir une mise en page commune à tous les cours ?

La méthode n’est pas très compliquée, je vais la présenter ici, toutes mes sources viennent de Moodle.org (voir ici). Je présente la méthode pour Moodle 2.2 et plus, mais les bonnes lignes de codes pour les plus anciennes version sont dans le lien.

Modifier le fichier config.php

Il faut commencer par modifier le fichier config.php de notre Moodle en y ajoutant les lignes suivantes, selon le format de vos cours, qui peut être thématique, par semaine… :

$CFG->defaultblocks_site = 'site_main_menu,course_list:course_summary,calendar_month';
$CFG->defaultblocks_social =  'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,course_list';
$CFG->defaultblocks_topics =  'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';
$CFG->defaultblocks_weeks =  'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';

Toutes ce lignes se retrouvent, au besoin, dans le fichier config-dist.php. La première va écraser la config par défaut pour tous les formats de cours, puis les trois autres concernent chacune un format de cours différents.

Entre les guillemets, on retrouve le nom des blocs que l’on veut faire apparaître. Avant les deux points, ce seront les blocs de la colonne de gauche, et, après les deux points, les blocs de la colonne de droite. Il est possible de ne rien mettre avant ou après les deux points si on veut une colonne vide.

Et c’est tout, tous les cours créés à l’avenir le seront avec la nouvelle configuration. Mais qu’en est-il pour les cours existant ?

Créer un fichier resetblocks.php

Pour les cours existants, il faut créé une petite routine php qui va retraiter automatiquement tous les cours pour vous. Créez une fichier resetblocks.php et insérer-y les lignes suivantes :

<?php
//moodle 2.2+
require_once('config.php');
require_once($CFG->libdir.'/blocklib.php');
$courses = get_courses();//can be feed categoryid to just effect one category
foreach($courses as $course) {
   $context = context_course::instance($course->id);
   blocks_delete_all_for_context($context->id);
   blocks_add_default_course_blocks($course);
} 
?>

Puis, téléchargez le fichier sur votre serveur, à la racine de Moodle : http://votremoodle.org/resetblocks.php. Exécutez ensuite la routine en accédant au fichier via votre navigateur. Attention, à ce que les droits d’accès sur le fichier soit les bons.

Si vous avez une grand nombre de cours sur la plateforme elearning, vérifiez également le temps d’exécution alloué à PHP (max_execution_time). Si ce dernier est trop court la routine ne traitera pas l’ensemble de vos cours.

Voilà, c’est plutôt simple et cela donne une bonne souplesse pour la gestion de la mise en page des cours car on pourra toujours modifier a posteriori la mise en page de ces cours grâce à cette méthode. Attention, toutefois à ne pas utiliser le fichier à la légère si vous avez beaucoup de cours et bien faire une sauvegarde complète du site avant de lancer le script.

Archives