問題六

  1. 課程樹的課程顯示程式迴圈,必須來讀上層課程種類,再讀下層,否則會出現如下狀況。原因為課程樹外掛套件,利用 mdl_course_categories 表的 sortorder 欄位排序,但大量匯入時若沒指定 sortorder 值,就會造成顯示問題。
    Image coursetreelistsortorder
  2. 解決方式:因為匯入課程資料時,一定先匯入上層課程種類,再匯入課程,因此上層課程種類的 id 一定比下層課程 id 小。修改資料讀取以 id 再以 path 排序,則上層課程種類就會排在前面。
    [root@moodle course_tree_list]# diff -uwBN ../../../moodle/blocks/course_tree_list/block_course_tree_list.php block_course_tree_list.php 
    --- ../../../moodle/blocks/course_tree_list/block_course_tree_list.php	2013-01-16 17:51:08.000000000 +0800
    +++ block_course_tree_list.php	2014-08-06 20:20:12.349242352 +0800
    @@ -132,7 +132,7 @@
     		    if (!$courses) {
     				$out .= "Not Enrolled in any courses";
     		    } else {
    -				$query = 'SELECT * FROM '.$CFG->prefix.'course_categories ORDER BY sortorder';
    +				$query = 'SELECT * FROM '.$CFG->prefix.'course_categories ORDER BY id,path';//sortorder';
     				$course_categories = $DB->get_records_sql($query);
     
     				foreach ($course_categories as $cc) {