拙作のモジュールを導入するにあたって、何が不安かというと、当時PHPを使いだしたばかりだというのに無謀な挑戦で作ってきたモジュールが、まともに動くはずがない、という至極当然の不安だったりします。(いきなりBlognPlusのindex.phpに改造してどうするつもりだったのでしょうねぇ)
導入準備の(1)で、管理画面でのインストールは正常に終了したものの、「動作 ON/OFF」で実際に適用させた途端に画面が真っ白になった原因は、BlognPlus2.6.0での以下の仕様変更によるものでした。
- conf.php
・[変更]アドレス指定を絶対アドレスに変更
これは、公式の更新内容での記述ですが、BlognPlusのシステムの中で使用される定数定義の中で、フォルダの位置を指し表すものの値が、これまでindex.phpからの相対アドレスだったものが、サーバーでの絶対アドレスに変更されたということを意味しています。
具体的には、モジュールフォルダの位置を示していた"BLOGN_MODDIR"の値が、当初'module/'だったのが'/home/****************/public_html/****/blog/'のような長ったらしい値になってしまいました。
私の単純なミスなのか、単なる習慣だったのか、表示モード別分岐タグモジュールの先頭で、使用する関数群であるfunction.phpの読み込み時に
include("./".BLOGN_MODDIR."ifview/function.php");
というものがあって、先ほどの絶対アドレスになったことでfunction.phpを見つけられなくなったことによるPHPエラーでした。
これに関しては先頭の"./"を無くしてやることで大丈夫になるのですが、この際このinclude文を削除し、代わりにモジュールのinfo.phpで定義する「index.phpで事前に読み込むfunctionデータ」のところにこのfunction.phpをセットすることで、正常に動作するようになったわけです。
(実際は、導入の最後に、やっぱり今後不都合が発生しそうだったので、戻しました)
ここで、従来通りのやり方でindex.phpへの2か所の改造を施します。
結果から申しますと、正常に動作いたしました。
とはいうものの、これで解決したわけではなく「表示モード別分岐タグ」モジュールの前回(ver1.3)のときに「次回のバージョンUPでは~」と発言していたことを思い出し、この機会に機能面でのバージョンUPを図ろうと思いついてしまったのが運のつきでした。(愚かな…)
「表示モード別分岐タグ」モジュールのver1.4はすでに発表してありますので、変更点はそちらを参照いただくとして、そういったことでスクリプトのほぼ全部を描き直し、そのデバッグ作業で手間取っていたわけです。
さらに、後半になって気づいたことにモジュールの「動作ON/OFF」への対応というものがあります。管理画面にて個別にON/OFFを変えれるようになったことで、私のモジュールのいくつかのようにindex.phpの改造を伴うモジュールの仕様には注意が必要になると思われます。
なぜなら、何らかの事情(デバッグとか他モジュールとの整合性のチェックとか?)で動作OFFにしたとき、BlognPlusはモジュールのinfo.phpで設定したスクリプトを読み込まなくなるのはいいのですが、その中で定義された関数なども定義されないことになってしまいます。
しかし、index.phpに直接施した改造は、そんなON/OFFのことなんか知らずに記述されたとおりに未定義の関数を実行しようとします。
エラーが出て当たり前ですね。(あはは、画面が白いわぁ)
なので、これまで
$val["mes"] = if_view($val["mes"],$val["br_change"]);
$val["more"] = if_view($val["more"],$val["br_change"]);
とかやっていたindex.phpへの記述を
@include(BLOGN_MODDIR."/ifview/ifviewadd1.php");
と変更し、
そのifviewadd1.phpの中で
if(function_exists("if_view")){
$val["mes"] = if_view($val["mes"],$val["br_change"]);
$val["more"] = if_view($val["more"],$val["br_change"]);
}
という具合に変更しました。つまり、モジュールが読み込まれ、関数if_view()が定義されていた場合に限り、上記の動作を行うようにしたわけです。
これにより、不意に動作OFFにしたり、アンインストールした場合でも、同時にindex.phpの記述を削除する必要はなくなります。
最後に、先ほどのfunction.phpで、「今後不都合が発生しそうだったので、戻しました」の件ですが、これは次の「コメントアイコン&絵文字」モジュールに手をつけ始めて気づいた事柄が動機になっていますので、説明は次回にさせていただきますね。(眠いです)
≪ 続きを隠す