撮影した写真や音楽・映画のレビュー・Movable Typeの活用方法など。
Kamitani79-メロンとバナナとブログ【携帯】
[メニュー][HOME]

つぶやき

2012/09/26 23:45
└Armin van Buuren announces A State Of Trance 600 World Tour http://t.co/GHjbQnKt
Twitterで見る
Amebaなうで見る

携帯サイトのDOCTYPE宣言、切り替え(PHPをSSIにて利用)



2008/10/26 15:09
Kamitani79
コメント(6)を読む・書く

携帯サイトのDOCTYPE宣言についてで各キャリアごとにDOCTYPE宣言が異なるという記事を書きました。


ひとつのhtmlで携帯サイトを作り、
各キャリアからアクセスがあった場合、DOCTYPE宣言を切り替えるにはどうしたら良いか。


切り替えのPHPを紹介しますので、SSIは必須ですが利用してみてください。
XHTMLベースの紹介になります。(厳密に切り替える必要はないかもしれませんが。。。)


SSIをHTMLで読み出す場合、.htaccess等に
以下を追加し、PHPと同じディレクトリに置きます。


AddHandler server-parsed html
AddType application/xhtml+xml .html
AddType application/xhtml+xml .xhtm .xhtml


ユーザーエージェントの切り替え方法は、
携帯ホームページを作ろう! -ちょっと詳しいモバイルサイトの作り方-参考にしています。




■こちらをそのままコピーするか、
以下ファイルをダウンロードするかになります。

doctype.txt[右クリック・ダウンロード]
(拡張子をphpに変更してください。)


完全フリーです。著作権もありません。改変もどんどんやっちゃってください。

2008年11月11日ちょい変更。preg_matchにて分岐することにしました。

<?php
$agent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match("/DoCoMo/", $agent)) {
print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n");
print
("<!DOCTYPE html PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.3) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">\n");
print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\">\n");
print ("<head>\n");
print ("<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml; charset=Shift_JIS\" />");
} elseif(preg_match("/KDDI\-/", $agent)||preg_match("/UP\.Browser/", $agent)) {
print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n");
print ("<!DOCTYPE html PUBLIC \"-//OPENWAVE//DTD XHTML 1.0//EN\" \"http://www.openwave.com/DTD/xhtml-basic.dtd\">\n");
print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\">\n");
print ("<head>\n");
print ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\" />");
} elseif(preg_match("/J\-PHONE|Vodafone|MOT\-[CV]980|SoftBank/", $agent)) {
print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n");
print ("<!DOCTYPE html PUBLIC \"-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN\" \"xhtml-basic10-plus.dtd\">\n");
print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\">\n");
print ("<head>\n");
print ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\" />");
} else {
print("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n");
print
("<!DOCTYPE html PUBLIC \"-//WAPFORUM//DTD XHTML Mobile 1.0//EN\" \"http://www.wapforum.org/DTD/xhtml-mobile10.dtd\">\n");
print ("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja\">\n");
print ("<head>\n");
print ("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\" />");
}
?>




■読み出しこちらをになります。任意のフォルダで良いと思います。
PHPの場所はトップディレクトリから相対パスで指定してください。

<!--#include virtual="/php/doctype.php"-->




■htmlソースはこんな感じでしょうか。

<!--#include virtual="/php/doctype.php"-->
<meta name="keywords" content="キーワード1,キーワード2" />
<meta name="description" content="サイトの紹介文" />
<title>サイトのタイトル</title>
</head>
<body>
本文
</body>
</html>




少しでもXHTMLベースの携帯サイトが増えることを祈っています。
CHTMLベースは捨てましょう。


絵文字変換、画像縮小変換、全角半角変換などとそれぞれに処理が必要になってくるので、
わたしは「Movable Type(MT)」と「ケータイキット for Movable Type」を利用することをおススメします。

※最近流行の特定の会社へリンクしているスパムではありません。
ケータイキット for Movable Typeは携帯サイトの構築においてコストの面、機能的にも必要最低限用意されていて、自由度が高くわかりやすいからです。


コメント(6)を読む・書く



ランキングサイト
ランキングサイトに参加しています。たくさん素晴らしいサイトがありますが、
頑張っています!応援してくれる人はクリックをお願いします!
厳選リンク集

Kamitani79の日々のブログ。撮影した写真や音楽・映画のレビュー・Movable Typeの活用方法など。メロンとバナナのように!!