本ページではXoops Cube の管理画面の作成方法について説明します。
1.管理画面の作成方法
管理画面を作成しよう
前回作成したサンプルモジュール(言語ファイルの追加)にファイルを追加して今回のサンプルを作成します。
今回は3ファイルを追加し、1ファイルを修正します。
1. index.php(今回追加ファイル)
2. Module.class.php(今回追加ファイル)
3. admin.php(今回追加ファイル)
4. xoops_version.php
まずファイルの追加をします。
ファイルの追加をするにあたって、事前にフォルダを1つ作成する必要があります。
sample2モジュールの中に「admin」というフォルダを作成して下さい。
ここに、「index.php」 ファイルを作成して下さい。
次に「class」フォルダの中に「Module.class.php」 ファイルを作成して下さい。
最後に「language/言語」フォルダの中に「admin.php」 ファイルを作成して下さい。
作成後のディレクトリ構成は上記の画像のようになります。
<?php define("_AM_SAMPLE2_MENU1",'サンプル2管理メニュー');
本ファイルは、言語ファイルです。以下にコードの説明をします。
define("_AM_SAMPLE2_MENU1",'サンプル2管理メニュー'); ですが、
admin.phpの定数名には命名ルールがあり、 _AM_モジュールディレクトリ名_ から始まる定数が推奨されています。
<?php if(!defined('XOOPS_ROOT_PATH')) exit(); class Sample2_Module extends Legacy_ModuleAdapter { function Sample2_Module(&$xoopsModule) { parent::Legacy_ModuleAdapter($xoopsModule); } function hasAdminIndex() { return true; } function getAdminIndex() { return XOOPS_MODULE_URL. '/'.$this->mXoopsModule->get('dirname').'/admin/index.php'; } function getAdminMenu() { $root =& XCube_Root::getSingleton(); if(!$this->_mAdminMenuLoadedFlag) { $this->mAdminMenu[] = array( 'link'=> XOOPS_MODULE_URL. '/'.$this->mXoopsModule->get('dirname').'/admin/index.php', 'title'=> _AM_SAMPLE2_MENU1, 'show'=>true ); $this->mAdminMenu[]=array ( 'link' => $root->mController->getPreferenceEditUrl($this->mXoopsModule), 'title' => _PREFERENCES, 'show' => true ); $this->_mAdminMenuLoadedFlag =true; } return $this->mAdminMenu; } }
管理画面を作成するにはモジュールクラスを継承する必要があります。
本クラスでは、基本的に親クラスの関数をオーバーライドして実装していきます。
以下にコードの説明をします。
3行目の class Sample2_Module extends Legacy_ModuleAdapter ですが、管理ファイルの作成時には Legacy_ModuleAdapter を継承する必要があります。
クラスの名称については、 「{ModuleDir(先頭文字は大文字)}_Module」 とする必要があり、コードでは 「Sample2_Module」 となります。
5行目から始まる function Sample2_Module(&$xoopsModule) はコンストラクタで、処理は Legacy_ModuleAdapter のコンストラクタをコールしています。
10行目から始まる function hasAdminIndex() は、管理画面があるかを判定する関数をオーバーライドしています。 true を返すことで管理画面があることを意味します。
15行目から始まる function getAdminIndex() は、管理画面のアドレスを取得する関数をオーバーライドしています。
20行目から始まる function getAdminMenu() は、管理画面のメニューを取得する関数をオーバーライドしています。
26行目から30行目までの内容は、 「link」 は作成した管理画面のURL、 「title」 はその表示名称、 「show」 は表示非表示を指定しています。
32行目から37行目までの内容は、作成する管理画面のメニューに 「一般設定」 を表示したい場合に表示する方法を参考として表示しました。
$this->mAdminMenu[] にメニュー内容の配列を追加することで表示メニューを増やしていくことができます。
<?php require_once '../../../mainfile.php'; $root = & XCube_Root::getSingleton(); $root->mController->executeHeader(); ?> <div>管理画面だよ</div> <?php $root->mController->executeView(); ?>
以下にコードの説明をします。
いつものようにテンプレートを使用して記載することも可能ですが、今回はPHPファイルに直接HTMLを記載する方法にしました。
<?php $modversion['name'] = _MI_SAMPLE2_LANG_TITLE; $modversion['dirname'] = basename(dirname(__FILE__)); $modversion['hasMain'] = 1; $modversion['cube_style'] = true; $modversion['hasAdmin'] = 1; $modversion['templates'][0]['file'] = 'sample2.html'; // データベース設定 $modversion['sqlfile']['mysql'] = 'sql/mysql.sql'; $modversion['tables'][0] = '{prefix}_{dirname}_data'; // ブロックの追加 $modversion['blocks'][1]['name'] = 'ブロック'; $modversion['blocks'][1]['file'] = 'sample2_block.php'; $modversion['blocks'][1]['class'] = 'Sample2Block'; $modversion['blocks'][1]['template'] = 'sample2_block_template.html'; $modversion['blocks'][1]['func_num'] = 1;
今回は6行目の $modversion['hasAdmin'] = 1; を追加しているだけの修正となります。
全ての修正が完了したら、「モジュールの管理」画面から、モジュールのアップデートをして下さい。
アップデートが完了したら、「互換モジュール」等を押下して画面表示を更新して下さい。(「F5」等のキーで画面を更新させても良いです。)
以上でXoops Cube の管理画面の作成方法を終了します。お疲れ様でした。