ブロックで使用するテンプレート名に注意

2007/06/27 | XOOPS

Xoopsでは左ペインや右ペインに自由にHTMLを表示でき、これをブロックという。ブロックはモジュールでも設定できるし、カスタムブロックとしてモジュールに属さないブロックを作ることも出来る。
現在作成中の記事管理モジュールでもブロックを作成しているのだが、これにかなりはまってしまった。はまった内容というのは「何度チャレンジしても予期していないものが表示されてしまう」というもの。
基本的にXoopsではこれらテンプレートはインストール時にxoops_version.phpでの記述に基づいてデータベースに格納される。このファイルにはテンプレートを呼び出すプログラム名やテンプレート名等を記述するのだが、原因は「テンプレートファイル名」だった。
ブロックのテンプレートは基本的にモジュール内の「templates/blocks」ディレクトリに設置することになっている。またxoops_version.phpでは特にディレクトリ名を指定することはなく、ファイル名だけで指定するようになっている。

ここで「予期しないものが表示されてしまう」原因は、「templates下におかれているテンプレートファイル名とtemplates/blocks下におかれたテンプレートファイル名が同じものだったこと」だった。

これはどういうことか。

どうやら同じファイル名のテンプレートがtemplates下にあった場合、そちらを読み込むようだ。だいたいこれがおかしい!。その階層をスキャンするようになっているのなら、xoops_version.phpでディレクトリも含めて指定すればいいはずだ。それが駄目なら、ブロックのテンプレートはtemplates/blocks下のみスキャンすればいいはずだ。

結局解決策として、ブロック用のテンプレートのファイル名を変更し、xoops_version.phpでのテンプレートの指定を変更することでうまく動作してくれた。

こんなことで1時間以上悩んでしまった。
こういうタコな仕様は改善されるべきと思う。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net