MODXでPC用、スマホ用コンテンツ出し分け
MODXでPCや携帯、スマホ別にテンプレートを切り替えて表示するプラグイン「MobileConverter」 をこのサイトで公開しているけど、正直使い方はそこそこ難しい。細かい条件定義だったり、文字コード変換、画像の自動拡大縮小、cookie制御も含めて特に必要なくて以下の要件を満たすだけなら、MobileConverterを使うまでもないです。
とりあえず試しに新デモサイトでMODX Evoの「サンプルサイト有標準インストール(バージョン1.0.6J)」パッケージを展開して適当に設定してみます。
スマホ用のリソースは標準で入っているもう一つのテンプレート「Minimal Template」を指定して、本文(コンテンツ)も適当に入力します。スマホ用リソースのIDは17になりました。
変数名は「リソース切替」、入力タイプは「Text」
テンプレートとの関連付けは「xRay」
プラグインに以下のPHPコードをつっこんで保存。
簡単に中身を説明するとUser Agentが「android」「iphone」の時に違うリソースIDの中身を返すようなコードです。
サンプルサイトのトップページにあたるHome(1)のリソースを編集します。
テンプレート変数の「スマホ用のリソースIDを記述します」のところに、最初に作ったスマホ用リソースのリソースIDを入力します。
PCのブラウザでトップページにアクセスするといつものサンプルページが表示されます。そしてスマホのブラウザでトップページにアクセスするとスマホ用に作ったリソースID17の中身が表示されます。
これでトップページだけスマホ用のページができました。他のページも同じような要領で作っていけばスマホ用のページが作れます。ちなみにPCページはあるけど、スマホページがないというリソースの場合は、「スマホ版はありません」というスマホ用のリソースを作って全てそこに飛ばすようにするといいかなと思います。
上記のサンプルではスマホでアクセスしてもPC用のページを見たいときにPC用ページを開くことができません(Agentで強制的に変わるため)。この場合、PC用を見たいときは特定のcookieを設定させ、そのcookieがある場合はPC用を表示するようなロジックを入れれば実現できます。プラグインのコードはシンプルなのでphpが書ける人は直ぐ書けると思います。
ちなみにこの機能はMobileConverterにも搭載されていたり(ちょっとスペルミスがあるけど…orz)。