[关闭]
@tony-yin 2017-08-10T02:37:05.000000Z 字数 1668 阅读 892

Moodle Local 插件讲解

Moodle


Local 插件在 Moodle 中相比于其他插件算是比较容易上手的一个插件,Local 插件中前后台分离,不用遨游在杂糅前后端的代码里。学会 Local 插件是上手其他插件的前提,其实一旦学会 Local 插件也会发现其他插件不过是它的一种变种形式罢了,只要举一反三就能很快掌握。

流程图

image

前端

Template

服务器配置了相应的 url,所以每个插件的加载首页都是 index.php,但是并不意味着页面的代码就在 index.php 中,首先在 index.php 中调用 renderer.php 中相应的页面渲染方法,例如 render_index_page($page) 方法:

  1. public function render_index_page($page) {
  2. $data = $page->export_for_template($this);
  3. render_from_template('local_xxx/index', $data)
  4. }

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日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注