Moodle插件開發大全

moodle插件開發國內可參考資料少的可憐,該筆記爲完成畢設過程整理,囊括插件目錄結構自動化創建工具使用、插件數據庫創建工具使用、插件開發調試技巧、插件開發必備php基礎知識及moodle平臺封裝源碼解讀等。

其中還包括自己開發的插件的一些內容,所以請讀者自行判斷擇需閱讀,寫這篇博客的目的是將插件的大致開發流分享給大家,讓大家儘快上手,具體的知識請到moodle官網閱讀英文開發手冊。

整理匆忙難免有紕漏,還請各位讀者指正,不勝感激。

 

0、php相關:

參考教程:

http://www.runoob.com/php/php-variables.html

數據類型:http://www.runoob.com/php/php-datatypes.html

變量作用域:http://www.runoob.com/php/php-variables.html

輸出方式區別(筆記部分):http://www.runoob.com/php/php-datatypes.html

常量定義使用:http://www.runoob.com/php/php-constants.html

 

1、插件目錄結構:(使用第3點的工具自動構造,不用自己寫)

 

2、教程(插件開發教程,統統瀏覽一遍)

參考:https://docs.moodle.org/dev/Tutorial

3、自動構造工具:(用於構造插件的目錄結構)

參考:https://docs.moodle.org/36/en/Plugin_skeleton_generator#Example

4、xmldb使用(用於設計數據庫,建表、字段、外鍵,會生成install.xml文件)

參考:https://docs.moodle.org/dev/XMLDB_editor

 

5、公認的bug:對中文兼容性不好,目前官方也沒有較好的解決辦法。

解決辦法:

0、eclipse---選中文件---設置屬性---編碼設置成UTF-8然後再輸入中文字符。(親測有效)

1、config.php加入

$CFG->unicodecleanfilename = true;

===============================1.9試了下只要改這個就可以了

(lib/editor/htmlarea/coursefiles.php),在第二行加上這樣一句:

2、@header("Content-Type: text/html; charset=utf-8");

 

6、類命名參考:

https://docs.moodle.org/dev/Frankenstyle

 

7、定義插件功能權限(重點):

文件:access.php

參考:https://docs.moodle.org/dev/Access_API

https://docs.moodle.org/dev/NEWMODULE_Adding_capabilities

角色風險定級參考:

https://docs.moodle.org/dev/Hardening_new_Roles_system

角色原型參考:

 

https://docs.moodle.org/dev/Role_archetypes

數據庫部分:

註冊活動:

https://docs.moodle.org/dev/Enrolment_API

8、插件表單頁面:

參考:https://docs.moodle.org/dev/Form_API

 

9、stringAPI

參考:https://docs.moodle.org/dev/String_API

get_string('editingquiz','mod_quiz'),字符串名,插件名。

各種騷操作都有。

 

10、moodle平臺編碼調試技巧:(重點)

0、直接naginx\html\mod\codemanagement下用eclipse打開待編輯的文件編輯保存然後刷新網站即可。

1、平臺調試:

網站管理----開發----保存更改

2、前端調試:

輸出一般值:

echo("<script>console.log('course_modle_id:".$id."')</script>");

echo("<script>console.log('modle_instance_id:".$c."')</script>");

輸出數組對象值:

echo("<script>console.log('object_cm:".json_encode($cm)."')</script>");

echo("<script>console.log('object_course:".json_encode($course)."')

這種調試會給頁面帶來一些渲染問題:

比如截圖:

加入調試代碼前:

加入調試代碼後:

明顯輸入框大小發生變化,解決辦法是開發完了把輸出註釋幹掉。

 

11、輸出渲染器:

 

參考:https://docs.moodle.org/dev/Output_renderers

 

12、頁面源碼:

https://docs.moodle.org/dev/html_writer

 

13、前端表示層顯示:

參考:https://justcoding.iteye.com/blog/1952989

具體可以查看lib/pear/HTML/QuickForm.php,和各個表單元素和規則的實現文件。

更加詳細請查看lib/weblib.php文件的實現。

除了要獲取頁面數據的前端頁面用form表單外,其餘顯示以及連接跳轉均用echo 直接輸出html表單即可。

 

14、數據庫操作層:

參考官網:https://docs.moodle.org/dev/Data_manipulation_API

參考官網:https://docs.moodle.org/dev/Data_manipulation_API#moodle_database::get_records.28.29

源碼參考:

 

參考博客:https://blog.csdn.net/iteye_5904/article/details/82542849

Moodle在lib/dmllib.php中實現了ORM機制。

 

15、moodle自身提供的函數,放在lib---moodlelib.php中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章