UserAgent別に表示要素を変更したい

2015年12月11日 at 11:35

実装する前の相談で申し訳ないのですが、
UserAgentを判定して、サイト上の要素を変更したい
と思っているのですが、concrete5ではどう実装するのがスタンダードでしょうか?

思いつくのは、
パターン1
PHPでUA判定して、ブロックの出力時に要素を出し訳する。

パターン2
PHPでUAのリストをJavaScriptの配列としてページに出力し、
ブロックと同時に出力されるJavaScriptで要素の切り替えをする。

どちらも、判定対象のUA情報はブロックの設定画面で入力する必要がある事には変わりませんが、どちらの実装がスタンダードでしょうかね?

パターン1だと、(concrete5の)キャッシュに対応できなそうなので、パターン2でしょうか?

タグ:

Re: UserAgent別に表示要素を変更したい

2015年12月11日 at 12:45
レスポンシブで作れば、ブロックのデザイン設定から、デバイスごとの表示のオンオフが可能ですので、これを利用するのがスタンダードではないでしょうか。

UA判定もできますけど、おっしゃる通りキャッシュとの相性が悪いですしね。
 

Re: Re: UserAgent別に表示要素を変更したい

2015年12月11日 at 17:08
ブロックのデザイン設定から、デバイスごとの表示のオンオフが可能


なるほど、なるべくUAを使わない選択肢も検討が必要という事ですね。

やりたい事をもう少し具体的に書くと、
アプリのダウンロード先URLをデバイス毎に分けたりと
・Androidの場合は、Google Playへのリンク
・iOSの場合は、iTunesへのリンク
のような感じで・・・

もう少し、違うシチュエーション(例えばカメラ画素数などのような、UAから判定できる端末のスペック別にコンテンツへのリンク先URLの変更などです)

ありがとうございます。参考に成りました!
 

Re: UserAgent別に表示要素を変更したい

2015年12月11日 at 19:23
リンクの表示非表示くらいでしたら、device.js使ってデバイス判定させて
display:none;で対応とかどうですか?
device.jsなら細かいデバイス判定できますし。
 

Re: Re: UserAgent別に表示要素を変更したい

2015年12月11日 at 22:24
ありがとうございます。

device.js・・・
すみません、初めて聞いたので調べました。
これ、いいですね。

ただ、国内キャリアのスマホ端末のスペック毎の制御が必要なので、
今回の用途には不向きですが、一般的なデバイス判定には使えそうですね。
覚えておきます。(本当にありがとうございます)

そして、教えて頂いた、device.jsを調べて、気がついたのですが、
わざわざ、ブロックにUA情報を持たせず、
対象端末のUAだけ、外部JSにして、テーマに最初から読み込ませれば良いですね。
(UA追加時の保守性は、一旦、気にしないで)

今まで、汎用では無い、フルスクラッチのCMSを独自に作っていた事もあって、
JSですら、DBに登録された情報を元に動的に生成する
という、固定概念が色々な思考を邪魔しておりました。