hook を活用します。
http://hampom.wordpress.com/2010/03/05/codeigniter-%E3%81%A7%E8%B6%85%E7%B0%A1%E6%98%93%E7%9A%84%E3%81%AA%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%83%9A%E3%83%BC%E3%82%B8%E5%87%BA%E5%8A%9B%E3%82%92%E3%81%99%E3%82%8B/
こちらのサイトにて hook を活用した方法が記載されています(感謝!)
ただ、Version が古いものなのか、2.0.3 ではそのままでは動きません。
具体的には、_ci_view_path の部分が 2.0.3 では
_ci_view_paths になっていて、しかも配列になっています。
加えて、protected のメンバ変数なので直接いじることができません。
というわけなので、core の Loader を拡張してメンバ変数をいじれる
プロパティを追加します。
Application/core/MY_Loader.php を追加します。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Loader extends CI_Loader { function __construct(){ parent::__construct(); }
/** * viewのパス上書き * @param string $path 追加するパス */ function view_path_override($path){ $this->_ci_view_paths = array(APPPATH.'views/'.$path => TRUE); } } ?>
こんな感じで作成したら、例の hook のプログラムの部分で
function view_set() { if ($this->ci->agent->is_mobile()) { $this->ci->load->view_path_override('mobile/'); } }
こうすると、携帯のアクセス時には views/mobile/配下の View を
参照するようになります。
0 件のコメント:
コメントを投稿