xoopsモジュール作製

xoopsモジュールってなんかめんどくさそうと思ってたんだけど、仕事暇だな〜って思ったときにいじって見たら、おもいのほか簡単に作れたのでメモ。全体像がわからない人にはおそらく勉強しやすい手順が有ったほうが
いいと思われる。お勧めの手順は以下。

  1. DBなし、管理人ページ無しでユーザが触る部分だけまず作る
  2. DBを追加する。
  3. 管理人ページを追加する。

以下、ゆるくてスマン。

xoopsモジュール作成方法(DBなし、管理人ページ無し)

contact usモジュールをコピペしてフォルダ名とかを目的のモジュール名とかに変更していけばまずMySQLを使わない、管理人ページの無いモジュールのつくりが大概わかると思う。(要PHP知識)

xoopsモジュール作成方法(DBあり)

mylinksとかをまねすれば出来る。(要SQL知識)
かなめは、以下の部分。

に必要なテーブル作成のためのSQLを記述するとインストール時にテーブルが作成される。

  • $modversion['tables'][0] = "テーブル名";

にテーブル名を記述しておかなければアンインストール時にテーブルが削除してもらえない。と、同時に再インストール時にすでにテーブルがあるので失敗する。意図的にアンインストール時にテーブルを削除させない場合は記述しない。その場合は、手動でテーブル削除すれば再インストールできた。

xoopsモジュール作成方法(管理人ページあり)

mylinksとかをまねして、以下を設定すればおそらくわかる。
$modversion['hasAdmin'] = 1;
$modversion['adminindex'] = "admin/index.php";
$modversion['adminmenu'] = "admin/menu.php";

参考 xoops_version.phpの記述内容

  • $modversion['name'] = "モジュール名";

モジュール名(定数)は
"モジュール名"/language/japanese/modinfo.phpとか
"モジュール名"/language/english/modinfo.phpとかで設定する。

  • $modversion['version'] = 1.00;

そのまんま

  • $modversion['description'] = "モジュールの概要";

モジュール概要(定数)は
"モジュール名"/language/japanese/modinfo.phpとか
"モジュール名"/language/english/modinfo.phpとかで設定する。

  • $modversion['credits'] = "";

しらん

  • $modversion['author'] = "";

そのまんま

  • $modversion['help'] = "top.html";

まだ触ったことない

  • $modversion['license'] = "GPL see LICENSE";

たぶんそのまんま

しらん

  • $modversion['image'] = "モジュールのアイコンファイル名.png";

"モジュール名"/"モジュールアイコンファイル名.png"で保存する。

"モジュールのディレクトリ名"を記述。
ブラウザからアクセスするときのモジュールのアクセス先が/modules/"モジュールのディレクトリ名"になる。当然、/modules配下のモジュールディレクトリ名と一致させる。

モジュールインストール時に利用されるSQLが記述されたファイルの場所をしていする。/sql/mysql.sqlのまんまでそこに記述すれば問題なし。それ以外は試してない。
モジュールインストール時にここで指定したsqlが実行されてテーブルが作製されるので、この中にCREATE文を書いておく。CREATE文中のテーブル名はプレフィックス無し。xoopsが勝手にやってくれる。
最終行に#のコメント行とかを残しておくとインストールに失敗する。あと、これだけではアンインストール時にテーブルが削除されない。以下の部分を登録しておこう。

  • $modversion['tables']["インデックス"] = "インストール時に登録されたテー

ブル名";

"テーブル名"はプレフィックス無しにすれば勝手にやってくれる。"インデックス"は0〜必要な数だけ。

  • $modversion['hasAdmin'] = 1;

管理人ページの有無。

$modversion['adminindex'] = "admin/index.php";
$modversion['adminmenu'] = "admin/menu.php";

以上、ゆるくてほんとスマン。今日は酔っ払いなんでここらへんで。以後、分かったことどんどん追記しまっす。