独自ブロックの作成方法
１．ブロックの基本構造/example/------------ block_example.php(ブロック本体の構成）|------ example2.php（上記以外のスクリプト）

下記は多言語に対応するならば必要
moodledata/lang/ja_utf8 -------

ja_utf8/block_example.php（日本語を連想配列にて格納）

moodle/lang/en_utf8

en/block_example.php（英語）----------

ブロックの構成は上記のような構成になっている。
最低限記述が必要なのは block_example.php(ブロック本体部)であり、ここを記述することで独自ブロックを作成することができる。

２．block_example.php の記述方法
class block_example extends block_base {function init() {$this->title = 'example';//ブロックのタイトルを設定$this->version = 〇〇〇〇 ;//ブロックノバージョンを設定}
function get_content() {if ($this->content !== NULL) {return $this->content;}$this->content->text = 'example';//ブロック内のテキストを設定$this->content->footer = 'Footer here...';//ブロック内のフッター部分のテキストを設定
return $this->content;}}
基本的な記述の流れは上記のようになり、主にコメントがされている部分を変更していくことで独自ブロックの作成ができる。

------------------------------------------------------------------------------------------以下で，実際のブロックの簡単な例として，ランダムな英単語を出力するブロックを示す。
ファイルの構成tango ---------block_tango.php(ブロックの内容を記述）|--------tango.csv（単語と訳を記述)
block_tango.php<?phpclass block_tango extends block_base {/** 初期設定 **/function init() {$this->title = 'Tango';$this->version = 20081024;//タイトル//バージョン

/** メインの部分 **/function get_content() {//ＣＳＶファイルの場所を指定$fileURL = "../blocks/tango/tango.csv";
if ($this->content !== NULL) {return $this->content;}
error_reporting(1);if(($file = fopen($fileURL,'r')) == null){//CSV ファイルを開く$this->content->text .= "ファイルが開けません。";
return $this->content;}error_reporting(2);$i=0;while($result = fgetcsv($file,1024)){ //単語と訳を全て格納
if($result[0]!=""){$quiz[$i][0] = $result[0]; //単語を格納$quiz[$i][1] = $result[1]; //訳を格納
$i++;
}
}
mt_srand(microtime()*1000);//乱数の種を設定$quizNum = mt_rand(0,$i-1);//乱数を取得$this->content->text .= " ";$this->content->text .= '<abbr title = "'.$quiz[$quizNum][1].'">'.$quiz[$quizNum][0].'</abbr></br>'; //乱数で得られた番号にある要素をブロックに表示//単語を取得した CSV ファイルの場所を表示$this->content->text .= "<br /><br />".$CFG->block_tango_getFileURL;$this->content->footer = ' ';return $this->content;}}?>//フッターに表示する文字を指定(今回は空白）

tango.csv
Apple,りんご
Orange,みかん
ブロックを同じコースに複数配置する場合
block_tango.phpに以下の関数を追加する
function instance_allow_multiple() {return true;}-------------------------------------------------------------------------------------------

設定画面を作成する場合
インスタンス（ブロック）毎に設定する場合
ファイルの構成tango ---------block_tango.php(ブロックの内容を記述）|--------tango.csv（単語と訳を記述)|--------config_instance.html（設定画面を記述)
config_instance.html<!-- デフォルトの値を設定 --><?php
if (empty($this->config->fileURL)) {$this->config->fileURL = "../blocks/tango/tango.csv";}?><table cellpadding="9" cellspacing="0" class="blockconfigtable"><tr valign="top"><td align="right"><?php print_string("blocktitle","blog") ?>:</td><td><!-- nameが変数名、valueが最初に設定画面に表示される値 --><input type="text" name="fileURL" size="50" value="<?php p($this->config->fileURL)?>" />
</td>
</tr>
<tr>
<td colspan="2" align="center"><!-- 決定ボタン --><input type="submit" value="<?php print_string("savechanges") ?>" />
</td>
</tr>
</table>block_tango.phpに下記の変更を加える
関数を追加する。
function instance_allow_config() {return true;}$fileURL = "../blocks/tango/tango.csv";↓変更$fileURL = $this->config->fileURL;の部分を変更する

これで、ブロック毎にファイルの場所を設定できる。

ブロック全てに適用する設定を行う場合
ファイルの構成tango ---------block_tango.php(ブロックの内容を記述）|--------tango.csv（単語と訳を記述)|--------config_global.html（設定画面を記述)
config_global.html<div style="text-align:center;"><table cellspacing="5"><tr><td valign="top" align="right"><b>ファイルURL</b></td><td valign="top" align="left"><!-- nameが変数名、valueが最初に設定画面に表示される値 --><input id="block_tango_getFileURL" type="text" name="block_tango_getFileURL" size="60" value="<?php
if(!empty($CFG->block_tango_getFileURL)) {p($CFG->block_tango_getFileURL);} else {p('../blocks/tango/tango.csv');} ?>"/><br/>
</td>
</tr>
<tr>
<td valign="top" align="right" colspan="2"><!-- 決定ボタン --><input type="submit" value="<?php print_string('savechanges'); ?>" />
</td>
</tr>
</table></div>

block_tango.phpに下記の変更を加える
関数を追加する。
function has_config() {return true;}$fileURL = "../blocks/tango/tango.csv"; の部分を変更する↓変更$fileURL = $CFG->block_tango_getFileURL;
これで、全てのブロックで統一してファイルの場所を設定できる。