XOOPSの画面内でCGI掲示板を表示する
既存のサイトをXOOPSに移行するにあたり、ネックになっていたのが従来から利用しているCGIの掲示板をどうするか?
XOOPSのモジュール化されていれば話は早いのですが、(SS)C-Boardは本家ですら開発が停滞しているので悩みどころ。
データを移行してXOOPSのフォーラム系モジュールに移行してもデザインが変わることで使い勝手の面で利用者に混乱を与えるのもどうかと思う。
何とかXOOPSのコンテンツ表示エリアに表示したいと思い以下の方法で解決。
1.XOOPSのnoneモジュールを用意
2.noneモジュールに以下のコードを記述
<IFRAME frameborder="0" scrolling=auto marginheight=0 marginwidth=0 src="URL" width=100% onload="this.height=300;this.height=this.contentWindow.document.body.scrollHeight+30"></IFRAME>
3.noneモジュールをインストール
IFRAMEの幅はXOOPSのコンテンツ枠、高さはIFRAMEに読み込んだ内容の高さに若干の余裕(30)を付加するもの。
IFRAME内でページが切り替わってもその内容に応じてIFRAMEが自動的にリサイズされます。
幅はwidth=100%で指定しつつscrolling=autoなので、幅が大きくなると横スクロールバーは表示されます。
これは使っているXOOPSのデザインが幅が固定サイズなのでそのようにしているだけで、heightの方法と同様にwidthも記述すれば幅の自動リサイズもできる(と思う)。
ただ、この方法はIFRAMEで読み込むコンテンツが自サイト(同一ドメイン)の場合に限られ、他ドメインのコンテンツを読み込んだ場合は、heightの値が取れないのでリサイズはできません。
今回は自サイトのCGI掲示板を表示したいだけだったので、これで解決しました。
別のサイトでは他サイトの表示もしたいので、そちらについては継続調査。
【追記】
書いておいて疑問に思いましたが、noneモジュール使わなくてもTinyDやpicoに直接記述してもできたかも?(笑)