前回の記事「拡張機能(エクステンション)を作りたい」で、基本的なJoomlaプラグインのインストール用XMLファイルの雛形を書いていました。
公式ドキュメントから拾ってきたものなのですが、やはり解説が少なすぎて、はまりました。
初心者なんてそんなものです。探したらドキュメントが見つかればよいのですが、悲しいことに見つかりません。ほかの人の書いたコードを見ながらトライアンドエラーです。
データベースを使う場合
データベースを使う場合、インストール時にテーブルをセットアップします。後でできなくはないですが、毎回プラグインが起動するたびにオーバーヘッドになりそうですので、ここでやったほうが良さそうです。
この設定方法もドキュメント内で見つけられませんでした。やり方はそれほど難しくなく、
<install> <sql> <file driver="mysql" charset="utf8">install/install.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">install/uninstall.sql</file> </sql> </uninstall>
のようにテーブルを準備するためのSQL文をインストールファイル内に入れておき、アンインストールも設定しておけばアンインストール時にテーブルを削除できます。
ここでいくつか嵌ったポイントがあります。
インストール用SQLファイルも宣言が必要
インストール用SQLファイルも、
<files> <filename plugin="myplugin">myplugin.php</filename> <filename>index.html</filename> <folder>install</folder> </files>
のように宣言しておく必要があります。そうしないと、インストール用SQLファイルが見つかりません、と怒られてしまいます。
インストールするファイルリスト中に、フォルダを宣言すれば、そのフォルダ内のファイルが自動的にインストールされます。
SQLファイルにはBOMを含んではいけない
テキストエディタでSQLファイルを保存して、ファイル形式は上で宣言されている通りUTF-8で保存しました。
インストールできません。SQLのSyntaxエラーが吐き出されてきました。
- SQL文をコピーアンドペーストしてパーサーにかけてみましたが、パスします。
- phpMyAdminでSQL文を走らせると動作します。
- 改行コードか何かかと思いバイナリエディタを起動してチェックしたところ、原因はBOMでした。UTF-8の場合、ファイルの先頭に「EFBBBF」(BOM:Byte Order Mark)の3バイトが加えられていました。
これを回避するには、テキストエディタ上で文字コードを指定せずに保存しなくてはいけません。それか、バイナリエディタで削除できればそのほうが良いかもしれません。
インストールはできた!
ここまでの設定で、プラグインファイルはひとまず揃いました。設定ファイルに言語ファイルを書いていないのに言語ファイルを求められてしまったので、空っぽのファイルを作ればインストールは通ります。
ZIPファイルにまとめて、アップロードすればインストールできます。
ZIPファイルにまとめるときに、ファイル内のルートにファイルを置かないとインストールできませんので要注意です。
設定用XMLが開かない!
設定画面に入れませんでした。原因は、
<filename plugin="myplugin">myplugin.php</filename>
設定ファイルでplugin=”myPlugin”としていたのに、設定ファイル名がmyplugin.xmlだったため、XMLファイルが開けなかったようです。
plugin=”myplugin”にすれば設定画面が開きます。
コードにエラーがあると画面真っ白
作ってみたプラグインがインストールでき、ひとまずやり遂げた感があります。が、有効化した途端画面が真っ白に!
サイトの表示も、管理画面も真っ白になってしまいました。クラスコンストラクタにエラーがあるのだと思います。
動かなくなったときの対処方法
FTP接続して、myplugin.phpをリネーム(_myplugin.php)すれば復活しますので、その上でプラグインを無効化して、名前を戻します。
プラグインの中身は失敗でしたが、とりあえずインストール作業まで成功したので、一歩前進です。
コメント