RIGHT:[[T0←>MaharaBlockDevV2-T0]] [[→T2>MaharaBlockDevV2-T2]]
* T1-最小限の実装 [#c493ca28]

ブロックに時計を表示するサンプルをつくってみる。ブロック名は SimpleClock としよう。

まずは、必要最小限のファイルを揃える。画面には、伝統的なとりあえず出力である "Hello World" を表示させてみる。

以下の4つのファイルを正しいフォルダ構成で作成する。スラッシュで終わっているのはフォルダ。

 simpleclock/
  +-- version.php
  +-- lib.php
  +-- lang/
       +-- en.utf8/
            +-- blocktype.simpleclock.php

上から順に。


** version.php [#b0b21143]
リリース日やリリース番号を定義する。

 <?php
 /**
  *
  * @package    mahara
  * @subpackage blocktype-simpleclock
  * @author    Takahiro Sumiya
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL
  * @copyright  For copyright information on Mahara, please see the README file distributed with this software.
  *
  */
 
 defined('INTERNAL') || die();
 
 $config = new StdClass;
 $config->version = 2017090100;
 $config->release = '1.0.0';
 
 ?>

** lib.php [#cca85e2c]
このファイルがプラグインの本体。通常のブロックタイプのプラグインは、MaharaCoreBlockType の継承クラスとして定義する。クラス内で最低限実装しなくてはならないメソッドはここにあげた5つ。他にもいろいろなメソッドを実装することで、プラグインの動作をきめることができる。実装可能なメソッドの一覧は[[こちら>Mahara/プラグイン開発-メモ]]へ。


 <?php
 /**
  *
  * @package    mahara
  * @subpackage blocktype-simpleclock
  * @author     Takahiro Sumiya
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL
  * @copyright  For copyright information on Mahara, please see the README file distributed with this software.
  *
  */
 
 defined('INTERNAL') || die();
 
 class PluginBlocktypeSimpleClock extends MaharaCoreBlocktype {
 
 
     public static function get_title() {
         return get_string('title', 'blocktype.simpleclock');
     }
 
     public static function get_categories() {
         return array('general');
     }
 
     public static function get_description() {
         return get_string('description', 'blocktype.simpleclock');
     }
 
     public static function get_css_icon($blocktypename) {
         return 'clock-o';
     }
 
     public static function render_instance(BlockInstance $instance, $editing=false) {
         $result='Hello World!';
 
         return $result;
     }
 
 }
 
 ?>

get_title() と get_description() で返す文字列が、ページ編集画面でのこのブロックプラグインの名前と説明文になる。これらは利用者の言語環境で切り替わるようにlangファイル(次の項で定義)から読み込む。

プラグインのカテゴリ(ページ編集画面でどのタブから選ぶか)は「一般」とするので 'general' を返す。array で返しているが、二つ以上の要素を入れて返すとインストール時エラーになる。

ページ編集画面で表示されるアイコンは、get_css_icon() で決定している。[[Font Awesome>http://fontawesome.io/icons/]] から使いたいアイコンのアイコン名称を返す。falseを返すと、従来通りの thumb.png を使うことになる。

render_instance() がこのクラスのキモ。ここでブロック内に表示するためのHTMLコードを生成して返す。ここでは、”Hello World!" という文字列だけをかえすようにしている。
** lang/en.utf8/blocktype.simpleclock.php [#vf1e09b9]
langファイル(言語ファイル)。プラグインで使用する文言を定義する。前項のようにget_stringで読み出すことができる。

 <?php
 /**
  *
  * @package    mahara
  * @subpackage blocktype-simpleclock
  * @author     Takahiro Sumiya
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL
  * @copyright  For copyright information on Mahara, please see the README file distributed with this software.
  *
  */
 
 defined('INTERNAL') || die();
 
 $string['title'] = 'SimpleClock';
 $string['description'] = 'Show current date/time on your view.';
 ?>
** 管理者でのプラグインインストール [#i9a9436f]
上記で作ったファイルをまとめたものがこちら。

- &attachref(simpleclock-t1.zip);
- &attachref(simpleclock-v2-t1.zip);

+ Maharaサーバの $mahararoot/blocktype の下に "simpleclock" 以下を保存する。
+ admin で Mahara へログイン
+ 「サイト管理/拡張機能/プラグイン管理」
+ 左の「プラグインタイプ:blocktype」の一番上に未インストールのものとして simpleclock が表示されているはず。「インストール」をクリックする~
#ref(http://sumi.riise.hiroshima-u.ac.jp/skitch/maharapg-t1-20170903-054638.png,20%);

このようになったら成功。

#ref(http://sumi.riise.hiroshima-u.ac.jp/skitch/maharapg-t1-20170903-055030.png,20%);
** ページへの配置 [#e33c1318]
管理者のままでもよいけれど、一般ユーザでページに配置してみると、うまくいっている ^^

#ref(http://sumi.riise.hiroshima-u.ac.jp/skitch/maharapg-t1-20170903-055658.png,20%);


RIGHT:[[T0←>MaharaBlockDevV2-T0]] [[→T2>MaharaBlockDevV2-T2]]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS