PHPフレームワークEthnaでテンプレートを分ける


最近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ディレクトリに新しくディレクトリを追加すればよいです。

もっとスマートなやり方あるかな・・・

eight-tree