Moodle开发笔记2-Block开发

2024-04-19 22:48
文章标签 开发 笔记 block moodle

本文主要是介绍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开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918651

相关文章

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,