Moodle Local 插件讲解
Local
插件在Moodle
中相比于其他插件算是比较容易上手的一个插件,Local
插件中前后台分离,不用遨游在杂糅前后端的代码里。学会Local
插件是上手其他插件的前提,其实一旦学会Local
插件也会发现其他插件不过是它的一种变种形式罢了,只要举一反三就能很快掌握。
流程图
前端
Template
服务器配置了相应的url
,所以每个插件的加载首页都是index.php
,但是并不意味着页面的代码就在 index.php
中,首先在index.php
中调用renderer.php
中相应的页面渲染方法,例如 render_index_page($page)
方法:
public function render_index_page($page) {
$data = $page->export_for_template($this);
render_from_template('local_xxx/index', $data)
}
在这个方法中,首先调用了
index_page
这个类中的export_for_template
方法,获得页面静态加载需要的数据,例如mustache
模板需要的数据data
数组的索引与模板名称一一对应,例如mustache
文件中若有{{#user}} hello !{{/user}}
,那么对应class
一定存在$data['user'] = xxxx
;以
render_from_template('local_xxx/index', $data)
为例,local_xxx/index
,template
目录下必定有文件名为index.mustache
的文件,这是moodle
封装好的命名规范,而mustache
文件就是页面展示的代码所在了;通过
{{#js}} require xxx {{/js}}
引入对应的JavaScript
文件;
CSS
每个local
插件中都存在一个style.css
这样的一个css
样式文件,系统运行时,会将每个模块的css
文件内容合并到一起,所以如果有两个名称一样的css
,则会发生覆盖的现象,所以建议起名字统一在最前面加上当前的插件名称,要注意的是,每次新增、修改或者删除css
文件内容后,如若需要立即查看效果,必要以admin
角色进入系统,然后清空缓存;
JavaScript
目前系统中的js
是基于RequireJS
框架,遵循AMD
开发规范,利用Grunt
构建的。amd
目录下有src
目录和build
目录,src
下的xxx.js
是供开发时编写调试使用,而build
目录下的min.js
则是网站实际运行时所使用的js
文件,经过压缩可以大幅度提升运行速度。所以每次修改js
完毕后,提交代码切勿忘记生成对应的 min.js
文件并提供,生成命令为grunt uglify
;
后端
db
1. access.php
主要负责记录权限的配置;
2. service.php
负责接收 ajax 提交,配置对应的后台 API 的类名、路径 和方法名等信息,并将对应的ajax
方法存入数据库中;
3. install.xml
用于安装系统时表结构的对应生成;
4. install.php
用于安装系统时数据库的缺省数据的提供;
5. upgrade.php 开发规范
用于系统表结构变化等版本升级事项的实现,由于生产环境中客户已有大量数据存在于数据库中,所以这时候不能采取重装系统的方式更改表结构或者更改数据库等操作,这时候就得借助 upgrade.php
平滑升级。
后台 API
1. externallib.php
负责编写service.php
中ajax
提交方法对应的后台方法,并调用lib.php
中的API
实现;
2. lib.php
负责方法的具体实现,代码与数据库的数据交互
3. lang/en/xxx.php 和 lang/zh_cn/xxx.php
en
目录下的表示英文翻译语言文件,zh_cn
目录下的表示中文翻译语言文件,具体调用方法为:
php中:
get_string(字符串名, 插件名)
mustache中:
{{#str}}字符串名, 插件名{{/str}}
作者:Tony
2017年02月28日
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。