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

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

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

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