モジュール開発キックスタートガイド †はじめにご挨拶 †この非公式のガイドは、たった二つのモジュール(で、うちひとつしか公開してない)しか作ったことがないXOOPS初心者によって書かれたものです。 初心者が、自分自身でもよくわかっていないものについて書いたドキュメントだということをあらかじめ納得した上で読んでください。 え?何でこういうガイドを書いたかって?だってさ、この手のガイドってどこを探してもないじゃん。 (もしこの文書に貢献したい人がいればどんどんやっちゃってください。*1) 目次 †作業に取り掛かる前に †前提条件: †
仕様書 †それではさっそく始めよう。 ここではモジュールにアクセスした人に挨拶をするモジュールを一緒に作っていく。 モジュールの機能は少しずつ拡張していくけど, まずは基本的なところから始めてみよう。
モジュールが満たすべき要件 †
開発してみよう †ディレクトリの構造 †君はとっくの昔にModuleBasicStructureを読んでいて、ディレクトリ及びスケルトンコードも作成しているものと仮定して話を進めていくよ。 もし読んでない場合は, 今すぐ ModuleBasicStructure を読もう。 って、ここまで言っても読まないめんどうくさがりな君のために、ディレクトリの構造を下に示しておこう。大サービスさ(笑): XOOPS_ROOT/modules/greeter
/language
/japanese
/templates
ファイルやディレクトリは後々付け足していくんだけど、とりあえずは上と同じディレクトリの構造にしておくように。 注意: ここから先、ファイル名やディレクトリ名がでてきた場合、特に記述がない場合はXOOPS_ROOT/modules/greeter の相対パスとします。 XOOPS Version について †手始めに以下の内容で /xoops_version.php を作ってみよう: <?php $modversion['name'] = _MI_GREETER_NAME; $modversion['version'] = 1.00; $modversion['description'] = _MI_GREETER_DESC; $modversion['credits'] = ''; $modversion['author'] = '<insert name>'; $modversion['help'] = 'help.html'; $modversion['license'] = 'GPL see LICENSE'; $modversion['official'] = 0; $modversion['image'] = 'greeter_slogo.png'; $modversion['dirname'] = 'greeter'; // Admin $modversion['hasAdmin'] = 0; $modversion['adminmenu'] = ''; // Menu $modversion['hasMain'] = 1; // Templates $modversion['templates'][1]['file'] = 'greeter_greet.html'; $modversion['templates'][1]['description'] = 'Greeter Form'; ?> 解説 †上のファイルを理解するのはほんとに簡単だけど、そのうちのいくつかをあえて解説しておこう。 _MI_ ... ? これってなんだ? †_MI_ で始まるものはすべて /language/japanese/modinfo.phpに配置される言語定義文だ。 このファイルはすぐに次の章で作成するけど、とりあえずは「必要に応じてユーザーに提示されるモジュールの情報」であるということだけ知っておこう。 これらは言語ファイルできちんと定義してあげないといけない。 テンプレート †テンプレートはモジュールをインストールする時にコンパイルされDBに保存される。だから、君の使うたくさんのテンプレートはそれぞれシステムに教えてあげないといけないんだ。 モジュール情報の言語ファイル †次に/language/japanese/modinfo.php を編集して以下の内容を記述してみよう。 <?php
define('_MI_GREETER_NAME', '挨拶モジュール');
define('_MI_GREETER_DESC', 'ユーザーがログインしたときに挨拶をする簡単なモジュールです。');
?>
解説 †どうだい?楽勝だろ? 後でもうちょっとこのファイルにも情報を足すけど、文法は全部同じだ。ほんとに簡単さ。もし君にフランス人の友達ができて、フランス語にも対応させたいなぁと思ったときは、/language/french/modinfo.php を作ってあげて、同じ2つのdifine文を付け加えてやるだけでOKだ(もちろん文章はフランス語でね)。こうすることで、もし友達がフランス語でXOOPSを使っていたとしても、挨拶モジュール(Greeter)はフランス語でその名前と説明を表示するわけさ。イカすだろ? ヘッダ。いわゆる「おまじない」 †以下の内容で/header.php を作成しよう: <?php
require('../../mainfile.php');
?>
これはちょっとした「おまじない」と覚えておくといいよ。 いよいよメインとなるファイルだ(index.php ) †いよいよメインとなるindex.phpを書いてみよう。ドキドキしてきたかい? <?php
require('header.php');
$uname = !empty($xoopsUser) ? $xoopsUser->getVar('uname','E') : _GR_ANONYMOUS;
// ヘッダをインクルードする前に必ずメインのテンプレートを読み込もう。
$xoopsOption['template_main'] = 'greeter_greet.html';
// ヘッダをインクルードする
include(XOOPS_ROOT_PATH.'/header.php');
$xoopsTpl->assign('greeting', _GR_GREETING);
$xoopsTpl->assign('uname', $uname);
// フッタをインクルードする
include(XOOPS_ROOT_PATH.'/footer.php');
?>
解説 †どうだい?だんだんコードっぽくなってきただろ? (といってもシンプルなものだけどね)。 $xoopsUser /header.php をインクルードするって事はつまり../../mainfile.phpをインクルードするってことなんだ。 そうすることでたくさんの変数やクラスが君のために作成される。 $xoopsUser なんかもそういった変数のひとつだ。 ユーザーがログインすると値がセットされるし、そうじゃない場合は空になる。 つまり、こうすることでユーザーが名前を持っているのか、もしくは匿名ユーザーなのかがわかる仕組みさ。 _GR_ ... ? これってひょっとして言語? †そう、そのとおり! 君の想像したとおり、これも同じように言語定義文で定義される。 でも今度は /language/japanese/modinfo.php の中で定義されてるわけじゃないんだ。なぜってこれはモジュール情報を扱ってるわけじゃないからね。これらはもうちょっと後で作成する/language/japanese/main.php で定義されているんだ。 $xoopsTpl †この変数も /header.phpをインクルードするときに作られる変数のひとつだ。Smarty のclassさ。 Smartyの公式チュートリアル(http://smarty.php.net/crashcourse.php)だと、$xoopsTpl という変数は $smartyとして定義されている。 この変数は君が$xoopsOption['template_main'] = 'greeter_greet.html'で定義したテンプレートのためのSmartyのクラスなんだ。 この機能を完璧に使いこなすためには、君は頑張ってSmartyを勉強しないといけない。 ここでは詳しくは解説しないのけど興味のある人は勉強するといいよ。 XOOPS_PATH.'/header.php' and XOOPS_PATH.'/footer.php' †これは単純でヘッダとフッタということさ。ここで知っておかなきゃならない大切なことは: きちんとインクルードしないといけない XOOPS_PATH.'/header.php'をインクルードする前に $xoopsTplを使ってはいけない。 すべての $xoopsTpl はヘッダとフッタに挟まれた場所で機能する必要がある。 /language/japanese/main.php これは /language/japanese/modinfo.php を作ったのと同じくらい簡単さ。以下は内容: <?php
define('_GR_GREETING', 'こんにちは、 ');
define('_GR_ANONYMOUS','匿名ユーザー');
?>
解説 そうだなぁ、ここでは何もいうことはないなぁ。 /templates/greeter_greet.html †これが実際のSmartyテンプレートファイルさ。HTMLのわかる君ならきっと簡単だろ? <p>
<{$greeting}> <{$uname}>
</p>
解説 †重要: Xoopsでは、すべての Smartyのタグは「<{...}>」となっていて、公式チュートリアルにあるような一般に使われている「{...}」タグとはちょっと異なるんだ。 これは忘れちゃ駄目だよ!「{...}」だときちんと動かないからね。 「<{$greeting}>」は /index.phpの中の命令<$xoopsTpl->assign('greeting', ...)>によって割り当てられた値を取得してるはずだよ。 「<{$uname}>」も同じ仕組みで値が割り当てられているはずだ。 準備はできたかい? †OK. これでモジュールを動かす準備は整ったはずだ。さっそく動かしてみよう! モジュールのインストール方法はここでは説明しないよ(君なら当然知ってるはずだ。) もしここまできちんとテキストにしたがって進んできたら、きっと管理画面のモジュール一覧に「挨拶モジュール」が表示されているはずだ。 とっととインストールして、君のホームページを見てみよう。 どうだい?「挨拶モジュール」 はメインメニューに表示されているかい? さっそくクリックして動くかどうか試してみようぜ!! きっとこんな文章が表示されているはずだ:
少なくとも僕のところではうまく表示されたよ。 君のところでは君のユーザー名もしくは「匿名ユーザー」という言葉がきっと表示されているはずだ。 最後に †今回の「モジュールの作り方」は以上でおしまい。これからもXoopsModuleDocにどんどん情報を足していって、データベース接続や管理画面の作り方といったトピックについても扱っていくつもりだよ。もし意見や質問がある場合は気軽にjc at cowgar.com までE-mailを送ってくれるとうれしいな<もちろん英語でですよ:訳者>。せっかくだから僕の作ったXoops サイト: http://cowgar.com/ にも遊びにきてよ. 今回作成した「挨拶モジュール」の完全なソースコードがダウンロードできるよ。(きちんとパッケージしてるからインストールも簡単。ダウンロードコーナーからダウンロードしてね。) それでは、読んでくれてありがとう!! 2003/08/07
もっと知りたい方は †
ご意見をお聞かせください †
|