さて、Nucleusを使ってちょっと本格的にモバイルサイトへの対応を考える。
Nucleusのプラグインには、NP_Moblieというプラグインがある。これ、アクセスしてきたUAを判別し、携帯電話ならば
- 文字コードをSJIS
- スキンを携帯電話ように
- 本文中のタグを一部残して除去
- 本文の文字数を制限
- 携帯電話用のURLにリダイレクト
なんてことをやっている。リダイレクトをしないようにするなら、NP_MobileWithSinglePageを使う。こちらも似ているが、リダイレクトせずにスキンだけを入れ替えるのが異なる。
基本NP_MoblieWithSinglePageを使って表示。だけれど、最初にHeaderで宣言を追加しておく必要があるようだ。
そういうわけで、
function event_PreSkinParse
に、
// header送信
header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
header("Pragma: no-cache");
echo '<?xml version="1.0" encoding="Shift_JIS"?>';
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
のように、Docutypeの宣言を追加。また、携帯電話の場合に表示の変更が必要なプラグインには、
function MobileUA() {
global $CONF;
$ua = serverVar('HTTP_USER_AGENT');
$isMobile = (
preg_match('/DoCoMo|J\-PHONE|UP\.Browser|KDDI\-|Vodafone|SoftBank/i', $ua) &&
!$CONF['UsingAdminArea']
);
return $isMobile;
}
という、携帯を判別するためのファンクションを追加。
これで一通りの携帯対応が終了。なんとか色つきで見られるサイトができた。
コメント