ウィルコムストア

2007年06月17日

MovableTypeでPHPを使ってMT4iの携帯用ページにアクセスを振り分ける はてブで『MovableTypeでPHPを使ってMT4iの携帯用ページにアクセスを振り分ける』をチェック

以前、携帯振り分けについてそのうち書くと書いておきながらそのままになってました。
昨日、携帯表示用プログラムをMT4iに変更して振り分けコードを直した時に思い出したので今日はそれを書いておきます。

携帯電話でのアクセスかPCでのアクセスか、はたまた他の端末からのアクセスかはブラウザがはき出す変数の一種であるUserAgentを見ればブラウザのバージョンなどが取得できます。
もちろん、この値はいくらでも自称可能なので商業サービスだとかで完全なチェックをしたい場合にはもっときちんとやるべきですが、個人ブログを携帯からのアクセスの時だけ携帯用ページで表示する程度の用途ならUAのチェックだけで全然十分です。

今回利用するMT4iには、MovableTypeの以下のアーカイブに相当するモードがあります。

  • インデックスページ
  • 個別エントリのページ
  • カテゴリアーカイブ

日別アーカイブや月別アーカイブに相当するページは搭載されていないので、対応する振り分け先がありません。
ですから、これらのアーカイブに携帯電話でアクセスされた場合にはインデックスページに飛ばす事とします。
インデックスページ、個別エントリ、カテゴリページへ携帯電話でアクセスされた場合には対応するページへ誘導できます。
これらの処理をすることによって携帯電話でGoogle検索してブログにたどり着いた場合に、きちんと対応するエントリの携帯用ページが表示されるようになりユーザの利便性が向上します

具体的なコードです。
まず、MTのテンプレート・モジュールから以下の名前の三つのテンプレートを作成します。

携帯振り分けインデックス

<?php
$link = "Location: http://インストール先のURL/mt4i.cgi";
$ua = $_SERVER["HTTP_USER_AGENT"];

if(ereg("DoCoMo",$ua)){ 
header($link);exit;
}

elseif(ereg("J-PHONE",$ua)){ 
header($link);exit;
}

elseif(ereg("Vodafone",$ua)){ 
header($link);exit;
}

elseif(ereg("SoftBank",$ua)){ 
header($link);exit;
}

elseif(ereg("MOT-",$ua)){ 
header($link);exit;
}

elseif(ereg("KDDI",$ua)){ 
header($link);exit;
}

elseif(ereg("UP\.Browser",$ua)){ 
header($link);exit;
}

elseif(ereg("PDXGW",$ua)){ 
header($link);exit;
}

elseif(ereg("DDIPOCKET",$ua)){
header($link);exit;
}

elseif(ereg("WILLCOM",$ua)){
header($link);exit;
}

elseif(ereg("Google Wireless Transcoder",$ua)){
header($link);exit;
}

?>


携帯振り分け個別エントリ

<?php
$link = "Location: http://インストール先のURL/mt4i.cgi?id=1&mode=individual&eid=<$MTEntryID$>";
$ua = $_SERVER["HTTP_USER_AGENT"];

if(ereg("DoCoMo",$ua)){ 
header($link);exit;
}

elseif(ereg("J-PHONE",$ua)){ 
header($link);exit;
}

elseif(ereg("Vodafone",$ua)){ 
header($link);exit;
}

elseif(ereg("SoftBank",$ua)){ 
header($link);exit;
}

elseif(ereg("MOT-",$ua)){ 
header($link);exit;
}

elseif(ereg("KDDI",$ua)){ 
header($link);exit;
}

elseif(ereg("UP\.Browser",$ua)){ 
header($link);exit;
}

elseif(ereg("PDXGW",$ua)){ 
header($link);exit;
}

elseif(ereg("DDIPOCKET",$ua)){
header($link);exit;
}

elseif(ereg("WILLCOM",$ua)){
header($link);exit;
}

elseif(ereg("Google Wireless Transcoder",$ua)){
header($link);exit;
}

?>


携帯振り分けカテゴリ

<?php
$link = "Location: http://インストール先のURL/mt4i.cgi?cat=<$MTCategoryID$>&id=1";
$ua = $_SERVER["HTTP_USER_AGENT"];

if(ereg("DoCoMo",$ua)){ 
header($link);exit;
}

elseif(ereg("J-PHONE",$ua)){ 
header($link);exit;
}

elseif(ereg("Vodafone",$ua)){ 
header($link);exit;
}

elseif(ereg("SoftBank",$ua)){ 
header($link);exit;
}

elseif(ereg("MOT-",$ua)){ 
header($link);exit;
}

elseif(ereg("KDDI",$ua)){ 
header($link);exit;
}

elseif(ereg("UP\.Browser",$ua)){ 
header($link);exit;
}

elseif(ereg("PDXGW",$ua)){ 
header($link);exit;
}

elseif(ereg("DDIPOCKET",$ua)){
header($link);exit;
}

elseif(ereg("WILLCOM",$ua)){
header($link);exit;
}

elseif(ereg("Google Wireless Transcoder",$ua)){
header($link);exit;
}

?>

インストール先のURLの部分はMT4iのインストールされているパスに書き換えてください。

プログラム1行目でlink変数にジャンプ先のURLを格納しています。
インデックスページの場合はMT4iのCGIを直接呼び出すだけです。
カテゴリアーカイブ、個別エントリへのジャンプの時にはカテゴリIDエントリIDを渡して呼び出しています。
2行目以降は完全にコードが共通しています。
上から順番にUserAgentがドコモか、Jフォンか、ボーダフォンか…(略)…ウィルコムかって感じでチェックし、もしヒットしたらlink変数に格納したURLへとジャンプしています。
ドコモ以外の携帯では結構UAにバリエーションがあったりしますね。

そして、実際にテンプレートにこれらのモジュールを組み込みます。

インデックス・テンプレート - メインページ
<$MTInclude module="携帯振り分けインデックス"$>
アーカイブ・テンプレート - エントリー・アーカイブ
<$MTInclude module="携帯振り分け個別エントリ"$>
アーカイブ・テンプレート - カテゴリー・アーカイブ
<$MTInclude module="携帯振り分けカテゴリ"$>

テンプレートの一番最初の部分に(<!DOCTYPE の前)にこれらのコードを追加します。
こうする事でテンプレートの内容がブラウザに渡され表示される前に携帯振り分けのPHPプログラムが実行され、携帯でのアクセスの場合はジャンプ、それ以外の場合は何もしないでテンプレートの内容を表示します。
対応するジャンプ先のない日別アーカイブ・月別アーカイブではメインページと同じコードを挿入することで携帯用ページのインデックスにジャンプします。

これだけの処理で携帯電話からのアクセスをMT4iの対応する携帯用ページに振り分けることが可能です。
同じようにUserAgentにWiiが含まれていればWiiのインターネットチャンネル用ページに飛ばす…ってことも可能です。

文章が読みにくいですが、参考になるでしょうか?

CoRichブログランキング
テクノラティお気に入りに追加する
ブックマークに追加する

この記事についているタグ

この記事に関係ありそうな記事

« MovableType用の携帯電話対応プログラムを乗り換えた
風林火山 『越後の龍』長尾”Gackt”景虎ついに降臨 »

もしかしたら関係あるかもしれない商品

トラックバック

 このサイトへのトラックバックは管理人によるチェックの後で表示されます。
 記事の内容と関係のないページや管理人が不適切と判断したページは表示されません。

 

コメントを投稿

TypeKey認証されていないコメントは管理人によるチェックの後で表示されます。
管理人が不適切と判断したコメントは削除する事があります

かいてるひと

かずや (HN:こじろー)
1978年3月2日生まれ 魚座 O型
北海道・道東の方に在住
へっぽこ日曜プログラマー

MyMiniCity
ameba マイルーム
Yahoo!Days マイページ
edita マイページ
アバウトミープロフィール
かずやのLive Space
かずやのクリップ
コトノハ コトリスト
Haru.fm かずやのつぶやき
Timelog かずやのページ

ミクシィ のプロフィール iddy プロフィール マイフォト Flickr Last.fm ミュージックプロフィール

2008年08月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

カテゴリー

参加コミュニティ

Sleipnirユーザーです MovableTypeでブログを作ってます パソコンテレビGyaO視聴者です Twitterユーザーです Wiiユーザーです ミクシィもやってます 北海道に住んでます 北海道日本ハムファイターズのファンです ひだりききです あわせて読みたい

モバイル

このブログはケータイ対応です。

GlassleafのQRコード

Valid XHTML 1.0 Transitional なかのひと track feed
Powered by
Movable Type 3.35
ブログで報酬稼ぐなら!buzzmo(バズモ)