以前こんな記事書いたんだけど、CakePHP1.3だとちゃんと動かないので、それの対応をば。
CakePHP1.2で携帯サイトでThemaを利用した時のViewディレクトリの検索順
一応やりたいことをまとめてみると
・携帯用Viewパス(app/views_mobile)を設定したい
・携帯用Viewパスは、携帯でアクセスされた時だけ設定したい
・Themaのこともあって、PC用のパスと入れ替えたい
静的で良いのであれば、
携帯からのアクセスかどうかはECWorks Blog | Ktai Library for CakePHP1.2にて判定。
※CakePHP1.2用と書かれていますが、1.3でも動くらしい→Twitterで作者の方に聞いてみた!
※実際動いてます(体験談)
ということで、こんな感じに。
まあ、わざわざ書き換えなくても追加するだけで良いかもしれないけど、個人的には予想外の挙動とかが嫌なので書き換える様にしてみた。
ま、その辺は好みかも。
CakePHP1.2で携帯サイトでThemaを利用した時のViewディレクトリの検索順
一応やりたいことをまとめてみると
・携帯用Viewパス(app/views_mobile)を設定したい
・携帯用Viewパスは、携帯でアクセスされた時だけ設定したい
・Themaのこともあって、PC用のパスと入れ替えたい
静的で良いのであれば、
# app/config/bootstrap.php
App::build(array('views' => /path/to/hogehoge));で良いんだけど、動的にやりたいのでapp_controller.phpでやりたい。携帯からのアクセスかどうかはECWorks Blog | Ktai Library for CakePHP1.2にて判定。
※CakePHP1.2用と書かれていますが、1.3でも動くらしい→Twitterで作者の方に聞いてみた!
※実際動いてます(体験談)
ということで、こんな感じに。
function beforeFilter() {
...
if (
array_key_exists('Ktai', $this->components) &&
$this->Ktai->is_ktai()
) {
// Viewのパスへの書き換え
$view_paths = App::path('views');
$result = array_search(ROOT.DS.APP_DIR.DS.'views'.DS, $view_paths);
if ($result !== false) {
$view_paths[$result] = ROOT.DS.APP_DIR.DS.'views_mobile'.DS;
}
App::build(array('views' => $view_paths), true);
}
...
}まあ、わざわざ書き換えなくても追加するだけで良いかもしれないけど、個人的には予想外の挙動とかが嫌なので書き換える様にしてみた。
ま、その辺は好みかも。

