UserAgent 別にテンプレートを切り替える方法

UserAgent (たとえばPC/ケータイとか) 別にテンプレートを更新したくなったら下記の方法で可能。
もっといい方法があるかもしれない。

1. Controller に下記のメソッドを追加
[php]
/**
* UserAgent を判別する
* 携帯電話にも対応
*
* @access protected
* @return string フォームにより要求されたアクション名
*/
function getUserAgent()
{
$agent = &Net_UserAgent_Mobile::singleton();

if (!PEAR::isError($agent)) {
switch (true) {
case ($agent->isDocomo()):
return MOBILE_TYPE_DOCOMO;
break;
case ($agent->isEzweb()):
return MOBILE_TYPE_AU;
break;
case ($agent->isVodafone()):
return MOBILE_TYPE_SOFTBANK;
break;
}
}

// PC
return MOBILE_TYPE_PC;
}
/**
* UserAgent を判別してテンプレートディレクトリを動的に変更する
*
* @access protected
* @return string フォームにより要求されたアクション名
*/
function getTemplatedir()
{
$template = $this->getDirectory(‘template’);
switch ($this->getUserAgent()) {
case MOBILE_TYPE_DOCOMO:
case MOBILE_TYPE_AU:
case MOBILE_TYPE_SOFTBANK:
$template .= "mobile/";
break;
case MOBILE_TYPE_PC:
default:
$template .= "pc/";
break;
}
return $template;
}
[/php]

2. template_dir の下に、pc/ mobile/ を掘って、その中にテンプレートを入れておく

以上で、PC/ケータイくらいだったら振り分けられる。

Share on Facebook0Share on Google+0Tweet about this on TwitterBuffer this pageEmail this to someone