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中。

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