摘要:插件讲解插件在中相比于其他插件算是比较容易上手的一个插件,插件中前后台分离,不用遨游在杂糅前后端的代码里。学会插件是上手其他插件的前提,其实一旦学会插件也会发现其他插件不过是它的一种变种形式罢了,只要举一反三就能很快掌握。
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.phpen目录下的表示英文翻译语言文件,zh_cn目录下的表示中文翻译语言文件,具体调用方法为:
php中: get_string(字符串名, 插件名)
mustache中: {{#str}}字符串名, 插件名{{/str}}
作者:Tony
2017年02月28日
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/23124.html
摘要:问题描述由于某些原因,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,因此选择使用上传文件的形式来批量生成用户,但是上传用户在不给定字段时,应该生成密码并通知用户,但是最终结果是生成用户成功了,邮件并没有发出邮件服务器 问题描述 由于某些原因,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,因此选择使用上传文件的形式来批量生成用户,但是上传用...
摘要:什么是开源的轻量级性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,时间和内存使用情况。基于浏览器的性能分析用户界面能更容易查看,或是与同行们分享成果。对于本地开发环境来说,进行性能分析是够用了。 什么是 XHPROF? XHPROF:Facebook 开源的轻量级PHP性能分析工具。 它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。 XHPr...
摘要:扩展应用模块功能介绍扩展应用由很多部分组成,其中主要模块为为了避免由于翻译原因导致的问题,因此在下文中对相关模块的称呼一律采用上面的英文。附录官方开发文档英建议有英文阅读能力的人阅读此文档。 概述 本文通过对chrome插件的各个部分进行快速的介绍,从而让大家了解插件各个部分的关系,并且知道如何将其进行组装成一个完整的chrome插件。 由于chrome官方文档中对于如何从零开发一个c...
摘要:在将臭未臭之前,我们赶紧把其中的统一认证这块过一下。的历史前面说了是耶鲁大学实验室的在年出的一个开源系统。这次我们先看看官网出的一幅图,这张图片介绍了的组成以及支持的各种协议,各种特性,不烦看看 为什么要做这个尝试? 微服之道,方兴未艾;农之来学者,盖已千者! 这句是从《陶山集·太学案问》瞎改出来的。意思就是微服务的架构理念还在不断地发展,现在整个啥都 言必出微服务,差点都到了 没学...
阅读 2022·2021-11-23 09:51
阅读 3661·2021-10-20 13:49
阅读 1671·2021-09-06 15:13
阅读 1784·2021-09-06 15:02
阅读 3017·2021-09-02 15:11
阅读 862·2019-08-29 15:37
阅读 1706·2019-08-29 13:24
阅读 2243·2019-08-29 11:28