携帯サイトを構築するとき、キャリア毎の分岐などがHTMLだと非常に面倒くさいので僕の場合はPHPで構築します。わかりにくいタイトルでごめんなさい。
各キャリアで使用できるタグや、セレクタにも差があり、特にDocomoなんかは拡張子をxhtmlにするとCSSが上手く適用される(解釈の違いはあると思いますが...)とか、CHTMLの独自の仕様があったりとコーダー泣かせ。もう辛抱たまらん。
DOCTYPEなんかは各キャリアで分ける必要があったり、このDOCTYPEで表示に差が出る、なんてこともあるので非常に厄介。
ということで携帯サイトをPHPで構築する場合、DOCTYPEの振り分け方一例を紹介します。
<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if(ereg("DoCoMo",$agent)){
header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
echo '<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd">';
}
else if(ereg("^UP.Browser|^KDDI", $agent)){
echo '<!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtml-basic.dtd">';
}
else if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){
echo '<!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd">';
}else{
header("location: 3キャリア以外からのアクセスの場合、飛ばしたいURLを記入");
exit;
}
?>
上記コードをソース上の一番上に記入して3キャリアの振り分けと、携帯以外でのアクセス(PCなど)をはじいてます。はじいた後のURLはPCサイトがあればPCサイトのURLへ。なければelseを削除でもいいです。
また、インクルードで読み込むのもありです。
<?php require_once($_SERVER['DOCUMENT_ROOT']."/include/doctype.php"); ?>
僕の場合は楽をするためにPHPでこのような形にしていますが、もしもっと良い方法があれば教えてください!
コーダーの方々はどのようにして携帯サイトを構築しているのかとっても知りたいです。
みなさんは携帯サイトの場合、DOCTYPEはどのように指定していますか?
宮城県仙台市在住のWebデザイナーです。Webデザインからコーディング、SEO対策とかもうWeb制作に関わることはなんでもやっちゃいます。