http://www.hideblog.net/nikkis/show/186/
の上記をご覧下さい。解決方法があります。
テーマに m などを付けた場合、つまりcakephp1.3で携帯サイトを作って、
さらにキャッシュ機能を付ける場合、携帯サイトだろうがPCサイトだろうが同じビューになってしまう。
で、PC用はPC用のビュー、携帯用は携帯用のビューと分けて作る方法をまとめた。
と思ったけど、携帯は機種毎にビューの表示を分けているのでビューキャッシュできないので、携帯からのアクセスの場合は
ビューキャッシュを取らず、使わずということにした。
またなぜかdebugが2でもキャッシュをしちゃうので、debugが0のとき以外はキャッシュしないように
改造しちゃいました。
参考:http://text.tklabo.net/blog/20/change_filename_of_view_cache
キャッシュヘルパーを書き換える
○/app/views/helpers/cache.php(cake フォルダからコピる)
208行目らへん
$path = $this->here;
if ($this->here == '/') {
$path = 'home';
}
$cache = strtolower(Inflector::slug($path));
//これで携帯からのアクセス、またはデバッグ0の時はキャッシュを取らない
if (empty($cache) || Configure::read('debug') != 0 || isset($this->theme)) {
return;
}
DispatcherとBootstrapをコピー
○/cake/dispatcher.php
○/cake/bootstrap.php
を
○/app/libs/フォルダへ突っ込む
dispatcher.php の cached 内を変更
○/app/libs/dispatcher.php 523行目らへん
function cached($url) {
//debugが0の時のみ、キャッシュを使う
if (Configure::read('Cache.check') === true && Configure::read('debug') == 0) {
$path = $this->here;
if ($this->here == '/') {
$path = 'home';
}
require_once(VENDORS.'ecw'.DS.'lib3gk.php');
$lib3gk = new lib3gk();
//携帯からのアクセスの場合はキャッシュを使わない
if($lib3gk->is_ktai()){
return false;
}
$path = strtolower(Inflector::slug($path));
$filename = CACHE . 'views' . DS . $path . '.php';
if (!file_exists($filename)) {
$filename = CACHE . 'views' . DS . $path . '_index.php';
}
if (file_exists($filename)) {
if (!class_exists('View')) {
App::import('View', 'View', false);
}
$controller = null;
$view =& new View($controller);
$return = $view->renderCache($filename, getMicrotime());
if (!$return) {
ClassRegistry::removeObject('view');
}
return $return;
}
}
return false;
}
bootstrap.php に一行追加
○/app/config/bootstrap.php のどこでもOK
App::import('Lib', 'Dispatcher');
○/app/libs/bootstrap.php 最後の一行をコメントアウト
// require CAKE . 'dispatcher.php';
○/app/webroot/index.php
下記のように変更
//if (!include(CORE_PATH . 'cake' . DS . 'bootstrap.php')) {
if (!include(APP_PATH . 'libs' . DS . 'bootstrap.php')) {
bootstrapが2種類出てくるので要注意。
またdispatcher.phpだと携帯かどうかを判断できないので強引に読み出して判断する必要がある。
にしてもテーマの情報が少ないのでみんなまだつかってないのかなぁ。



