一.版块 (block) Block是以一个长方形区域出现在moodle网站的每个页面的左列或右列。Block是最简单、也是最常用的moodle插件(plugin)。 (l)bloek接口 ① block_base类,可定义子类来继承此父类,用来在block中显示文本。 ② block_list类,可定义子类来继承此父类,用来在block中显示链接。 具体实现方法 在继承 block_base或者block_list的子类中覆盖父类方法get_content(),在get_conient()方法中定义在block中显示的内容,还可根据需要来覆盖父类instance_allow_multip1e(),has_config(), hide_header()等方法。 (2)权限接口 判定用户是否有权限来读写时,会用到get_context_instance(),has_capability()这两个接口函数,get_context_instance用来获取coniext,has_capability用来判断用户是否在此context(环境)下有此capability(能力)。 具体实现方法 ①定义access.php文件,放在对应功能模块文件的db下。aceess.php文件以数组的形式来定义每个capability的context层次、capability的类型、对应每个角色的许可。 ②在PHP文件功能代码前使用get_context_instance和has_capability来判断用户是否有权限。 二、具体实例一 设计一个简单的版块:“helloworld”以显示“你好,世界!”。 1、创建block文件夹<?xml:namespace prefix = o ns = “urn:schemas-microsoft-com: office: office” /> 创建“helloworld”文件夹(目录名来自你的module name) ,将来放置到“moodle/blocks/下面。 2、创建block类文件 在”helloworld”目录下创建block文件“block_helloworld.php” (命名格式是 [module–_type]_[module-_name].php)。 在block_helloworld.php里要创建一个同名的类,该类继承“block_base” 基类。同时需要有2个基本的函数:”init” and “get_content”。代码如下: <?php class block_helloworld extends block_base { function init() { $this->title = get_string(‘helloworld’, ‘block_helloworld’); $this->version = 2011080800; } function get_content() { if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass; $this->content->text = ‘你好,世界!’; $this -> content -> footer=’Footer here…’ ; return $this->content; } } ?> init方法至少要设置2个变量:title(板块标题) and version(版本号)。 title将会显示在block区域的最上端。 version 注意:你每次upload你的plugin to moodle system,即将上传的version必须大于当前存在于moodle的plugin version。version的格式为:YYYYMMDD##。最后2位是YYYYMMDD当天的第n个版本。例如 2011080803,表示2011年8月8日第3个更新版本。 get_content()函数里的以下语句: if ($this->content !== NULL) { return $this->content; } 其作用是检查content 是否为null 。是因为moodle 的内部机制在一个php page 里可能对同一个block 的实例都会call 几次,那么为了提高性能,我们只会在创建该block实例时(这时content=null )才为其赋值。 get_content函数所返回值就会作为block page显示的content。同时它会存储在$this->content变量里。 以上2步就完成了最简单的helloworld block。 如何安装激活? 把“helloworld”文件夹复制到moodle/blocks/里,在浏览器里,用管理帐号登录到Moodle网站,然后click “通告(Notifications)”,moodle 就会即时检查安装新插件。 安装好之后如何使用? 用admin登录,然后在你要添加helloworld的页面里启动edit mode,然后在板块“Blocks”里选择“helloworld”版块即可。 (上面的2步是必须的,下面的步骤是可选的) 未完待续…… |
Moodle开发笔记6-Block开发(一)
一.版块 (block) Block是以一个长方形区域出现在moodle网站的每个页面的左列或右列。Block是最简单、也是最常用的moodle插件(p…