プラグイン前提のテンプレートでいいのか?
現在株式会社ブレイドではMT4及びMTOSに対応した汎用的なテンプレートセットの開発を進行中でして、これを広く一般公開したいなあと考えています。
そんな時に問題になるのがプラグインの存在です。便利なプラグインは積極的に使用したいけど、そのインストールを前提としてしまうと汎用性が無くなってしまう・・・。ならば、プラグインのインストールの有無によって処理を分岐してはどうだろうか?
思い立ったらすぐ実践です。
PageButeプラグインを使いたい
今回テンプレートセットを開発するにあたり、どうしても導入したかったプラグインが株式会社スカイアークシステム様で開発されたPageButeプラグインです。このプラグインはページを静的に分割生成するという機能を提供してくれます。
MTIfNonEmptyによる判別
今回の実験のポイントは次の二つです。
- PageButeプラグインのインストールの有無をテンプレート内で判別する。
- 1.の結果によって処理を分岐する。
この二つが実現すれば、「PageButeプラグインがインストールされている環境ではPageButeの機能を利用してページ分割を行い、PageButeがインストールされていない環境ではページ分割を行わない」という処理ができそうです。
さて、条件判別をするMTタグの一つに、MTIfNonEmptyがあります。これはtagモディファイアで指定されたMTタグで取得されるデータが空かどうかを判別します。どうもこいつが使えそうな気がしますが、指定したMTタグ自体が存在しない場合はどうなるのか・・・ちょっと実験してみましょう。
PageButeプラグインではMTPageContentsというタグが使用できますので、こいつを条件判別に使います。以下のような処理を任意のテンプレートに追加します。
<MTIfNonEmpty tag="PageContents"> <p>PageButeプラグインがインストールされています。</p> <MTElse> <p>PageButeプラグインはインストールされていません。</p> </MTElse> </MTIfNonEmpty>
さあ、この処理の結果はこうなりました。↓
PageButeプラグインが無い場合
PageButeプラグインが有る場合
!上手く処理されましたヽ( ´?`)ノ
どうやらMTIfNonEmptyでは指定されたMTタグ自体が存在しない場合でもエラーを返さないようですね。
このテクニックを使えば、テンプレートセットの設計にあまり悩まなくてもよさそうです。公開をお楽しみにしてください。