2012年4月12日木曜日

CakePHP 携帯ライブラリの設置

CakePHP1.3での携帯ライブラリの設置。覚え書き。

https://github.com/MASA-P/KtaiLibrary
https://github.com/MASA-P/ktai-dev


1.ecwディレクトリをまるごとvendorsディレクトリにコピー
※サイト全体にやるならappやcakeと同じディレクトリのvendorsでok。

2.app_controller.phpに追記
var $components = array('Ktai',・・・・);


//----------------------------------------------------------
//Redirect override.
//If iMODE access or use_redirect_session_id is true,
// adding session id to url param.
//----------------------------------------------------------
function __redirect_url($url){

 if(isset($this->Ktai)){
  if($this->Ktai->_options['enable_ktai_session'] &&
   ($this->Ktai->_options['use_redirect_session_id'] || $this->Ktai->is_imode())){
   if(!is_array($url)){
    if(preg_match('|^http[s]?://|', $url)){
     return $url;
    }
   $url = Router::parse($url);
   }
   if(!isset($url['?'])){
    $url['?'] = array();
   }
   $url['?'][session_name()] = session_id();
  }
 }
 return $url;
}

function redirect($url, $status = null, $exit = true){
 return parent::redirect($this->__redirect_url($url), $status, $exit);
}

 //「Ktai Library」の設定
 //
var $ktai = array(
 'enable_ktai_session' => true,
 'use_redirect_session_id' => false,
 'imode_session_name' => 'csid',
 'use_img_emoji' => true,
 'input_encoding' => 'UTF-8',//KTAI_ENCODING_UTF8
 'output_encoding' => 'UTF-8',//'SJIS-WIN',// KTAI_ENCODING_SJISWIN
 'output_auto_encoding' => true,
 'use_binary_emoji' => false,
 'output_auto_convert_emoji' => false,
);

3.コンポーネントにktai.phpをつっこむ
/app/controllers/components に ktai.php をコピーする


4.ついでにケータイでのアクセス時のデフォルトレイアウトを変更しておく

function beforeFilter(){
 if(!($this->Ktai->is_ktai()) ) {
  $this->layout = 'default';
 } else {
  $this->layout = 'default_mob';
 }
}