本文主要是介绍Moodle开发笔记2-Block开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Block 是以一个长方形区域出现在 moodle site 的 page 的左列或右列。 Block 是最简单、也是最常用的 moodle plugin 。
下面讲解如何开发一个 hello world moodle block “helloworld”
1. create “helloworld” folder ( 目录名来自你的 module name) in ”moodle/blocks” folder
2. 在 ”helloworld” 目录下创建 block page “block_helloworld.php” ( 命名格式是 [ module-type]_[module-name].php )
Block php file 要创建一个同名的 class ,该 class extends “block_base” class 。同时需要有 2 个基本的函数: ”init” and “ get_content”
<?php
class block_helloworld extends block_base {
function init() {
$this->title = get_string('helloworld', 'block_helloworld');
$this->version = 2009050700;
}
function get_content() {
if ($this->content !== NULL) {
return $this->content;
}
$this->content = new stdClass;
$this->content->text = 'Hello World!';
return $this->content;
}
}
?>
Init 函数至少要设置 2 个变量: block title and block version 。
block title 将会显示在 block 区域的最上端。
block version 注意:你每次 upload 你的 plugin to moodle system ,即将上传的 version 必须大于当前存在于 moodle 的 plugin version 。 version 的格式为: YYYYMMDD## 。最后 2 位是 YYYYMMDD 当天的第 n 个版本。例如 2010062903 ,表示 2010 年 6 月 29 日第 3 个 update version
get_content 函数所返回值就会作为 block page 显示的 content 。同时它会存储在 $this->content 变量里。
以上 2 步就完成了最简单的 helloworld block 。
如何激活?
用 admin account login ,然后 click “ Notifications ” in “ Site Administration ” block , moodle 就会即时 check and install new plugin 。
安装好之后如何使用?
用 admin account login ,然后在你要添加 helloworld 的 page 里启动 edit mode ,然后 in “Blocks ” pull down list , select “helloworld” block 即可
上面的 2 步是必须的,下面的步骤是可选的
3. (Optional) Add language file (like java message properties file) 。在 ”helloworld” 目录下创建一个 ”lang ” 目录,然后在 ”lang” 下创建一个 ”en_utf8 ” ,它表示这是一个 language folder for Englist with Unicode encoding 。如果你希望有一个 for US 方言的 englist language pack ,那么就在 ”en_utf8” 目录下创建一个 ” en_us_utf8 ” 目录。 在 Moodle里, child language会继承 parent language的所有 string message 。
然后在 ”en_utf8 ” 里 创建一个与 block page 同名的 php file : “block_helloworld.php” ,然后把所有要用到的 message 都放到该文件里。其格式是把这些 messages 都 存储在 ”$string” 数组变量里 。
下面一个 language php file 的例子:
<?PHP
$string[ 'helloworld'] = 'Hello World';
$string['helloworld:view'] = 'View Hello World Block';
$string['blockname'] = 'HelloWorld';
?>
回顾一下步骤 2 的 init 函数里用到一个函数
get_string('helloworld', 'block_helloworld');
该函数 Returns a localized string
第一个参数对应的是 language file 里的 message key ,例如上例的第一个参数就是对应 language file 里的 ”helloworld” 的 message 。
第二个参数是指定来自哪一个 module 的 language file ,例如上例指定的是 helloworld block 。该参数值实际就是存储该 message 的 php file name ( 不要 .php extension) 。例如:我们的 language php file 是 block_helloworld.php ,所以参数值为 ” block_helloworld” 。
另外还有一个函数与 get_string 类似,就是 print_string ,它是把返回的 string 输出。
4. (Optional but very mportant) Working with capabilities 。 capabilities 见上面的章节。
5. (Optional but very mportant) 添加 helloworld block 的 configuration interface ,使得在 edit mode ,在 block 区域里多一个 button link to configuration interface 。
例子:使 helloworld block 具有 configuration 功能,使得可以设置 $this->content 的值
1 )需要在 block main page ” block_helloworld.php ” 的 block_helloworld class里添加一个 return true的 instance_allow_config 函数,代码如下:
function instance_allow_config() {
return true;
}
这篇关于Moodle开发笔记2-Block开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!