最近PHPフレームワークEthnaを使っています。
最近は携帯電話サイト中心の開発が多くEthnaも携帯サイト用に
いろいろカスタマイズしています。
サイトのデザインも携帯サイト言えど侮れず(私はデザイン音痴です)
例えばDoCoMoならXHTMなどを使います。
しかし3キャリア(DoCoMo・AU・SOFTBANK)とも共通の書式ではないので、テンプレートを分けたほうがいいと思います。
(ただし同一画面で3ファイルのデザイン修正が必要ですが)
そこでEthnaでテンプレートをキャリアごとに分ける方法を簡単に紹介します
[AppID]_Controller.phpに「getTemplatedir()」をこんな感じで書き換えてやればよいです
function getTemplatedir()
{
$user_agent = getenv(“HTTP_USER_AGENT”); // ユーザーエージェント取得
$template = $this->getDirectory(‘template’);
$Config = $this->getConfig();
if(eregi(‘DoCoMo’,$user_agent))
{
// ドコモのとき
if ( file_exists($template . ‘/’ . $Config->get(‘template_docomo’)) ) {
$template .= ‘/’ . $Config->get(‘template_docomo’);
}
}
elseif(eregi(‘KDDI’,$user_agent))
{
// AUのとき
if ( file_exists($template . ‘/’ . $Config->get(‘template_au’)) ) {
$template .= ‘/’ . $Config->get(‘template_au’);
}
}
elseif(eregi(“j-phone|vodafone|softbank|mot”,$user_agent))
{
// ソフトバンクのとき
if ( file_exists($template . ‘/’ . $Config->get(‘template_softbank’)) ) {
$template .= ‘/’ . $Config->get(‘template_softbank’);
}
}
elseif(eregi(“Firefox|MSIE|Safari|Opera”,$user_agent))
{
// PCブラウザのとき
if (file_exists($template . ‘/’ . $this->language)) {
$template .= ‘/’ . $this->language;
}
}
else
{
// その他
}
return $template;
}
として
etc/[AppID]-ini.phpに
‘template_docomo’ => ‘docomo’,
‘template_au’ => ‘au’,
‘template_softbank’ => ‘softbank’,
というような感じで追記後はtemplateディレクトリに新しくディレクトリを追加すればよいです。
もっとスマートなやり方あるかな・・・