Moodle开发笔记6-Block开发(一)

一.版块 (block)     Block是以一个长方形区域出现在moodle网站的每个页面的左列或右列。Block是最简单、也是最常用的moodle插件(p…

一.版块 (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步是必须的,下面的步骤是可选的)
未完待续……

作者: admin

为您推荐

联系我们

联系我们

邮箱:

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部