Local
插件在Moodle
中相比於其餘插件算是比較容易上手的一個插件,Local
插件中先後臺分離,不用遨遊在雜糅先後端的代碼裏。學會Local
插件是上手其餘插件的前提,其實一旦學會Local
插件也會發現其餘插件不過是它的一種變種形式罷了,只要觸類旁通就能很快掌握。php
服務器配置了相應的url
,因此每一個插件的加載首頁都是index.php
,可是並不意味着頁面的代碼就在 index.php
中,首先在index.php
中調用renderer.php
中相應的頁面渲染方法,例如 render_index_page($page)
方法:css
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
文件就是頁面展現的代碼所在了;ajax
經過{{#js}} require xxx {{/js}}
引入對應的JavaScript
文件;數據庫
每一個local
插件中都存在一個style.css
這樣的一個css
樣式文件,系統運行時,會將每一個模塊的css
文件內容合併到一塊兒,因此若是有兩個名稱同樣的css
,則會發生覆蓋的現象,因此建議起名字統一在最前面加上當前的插件名稱,要注意的是,每次新增、修改或者刪除css
文件內容後,如若須要當即查看效果,必要以admin
角色進入系統,而後清空緩存;後端
目前系統中的js
是基於RequireJS
框架,遵循AMD
開發規範,利用Grunt
構建的。amd
目錄下有src
目錄和build
目錄,src
下的xxx.js
是供開發時編寫調試使用,而build
目錄下的min.js
則是網站實際運行時所使用的js
文件,通過壓縮能夠大幅度提高運行速度。因此每次修改js
完畢後,提交代碼切勿忘記生成對應的 min.js
文件並提供,生成命令爲grunt uglify
;數組
主要負責記錄權限的配置;緩存
負責接收 ajax 提交,配置對應的後臺 API 的類名、路徑 和方法名等信息,並將對應的ajax
方法存入數據庫中;服務器
用於安裝系統時表結構的對應生成;框架
用於安裝系統時數據庫的缺省數據的提供;
用於系統表結構變化等版本升級事項的實現,因爲生產環境中客戶已有大量數據存在於數據庫中,因此這時候不能採起重裝系統的方式更改表結構或者更改數據庫等操做,這時候就得藉助 upgrade.php
平滑升級。
負責編寫service.php
中ajax
提交方法對應的後臺方法,並調用lib.php
中的API
實現;
負責方法的具體實現,代碼與數據庫的數據交互
en
目錄下的表示英文翻譯語言文件,zh_cn
目錄下的表示中文翻譯語言文件,具體調用方法爲:
php中: get_string(字符串名, 插件名)
mustache中: {{#str}}字符串名, 插件名{{/str}}
做者:Tony
2017年02月28日