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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT