CakePHPで携帯サイトを作る - HTML出力振り分け(1)の続きです。
HTMLの文字コードはutf-8に限定しています。
ですので、とりあえずHTML出力振り分けの仕組みは完成します。
Index
ルーティングの設定
'/'に接続すると、topコントローラーにルーティングされるようにします。
-
//Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
携帯サイト用ビューディレクトリの設定
VIEWSディレクトリには、PCサイト用のビューを置くことにします。
携帯サイト用のビューは、APP_PATHディレクトリにmobile_viewsディレクトリを作成して、その中に置きます。
AppControllerのbeforeRender関数内で、携帯から接続された場合には、携帯サイト用のビューディレクトリ(app/mobile_views)のビューを使用するように設定します。
-
class AppController extends Controller
-
{
-
function beforeRender()
-
{
-
parent::beforeRender();
-
if (IS_MOBILE) {
-
// 携帯サイト用ビューのパスを設定
-
$config = Configure::getInstance();
-
// mobile_viewsディレクトリに携帯サイト用のビューを置く。端末ごとにビューは分けないことにする。
-
}
-
}
-
}
AppController::beforeRender関数でビューへのパスを設定したのは、コントローラーごと、またはアクションごとに携帯端末からの接続でもPCサイト用のビューを使用したいためです。
そうするときは、AppControllerに携帯サイト用ビューを使用しないためのフラグを追加するつもりです。
携帯からの接続の場合には、bootstrap.phpなどで$viewPathsを変更する方法もあると思います。
コントローラーの作成
topコントローラーを作成します。
-
class TopController extends AppController
-
{
-
var $uses = null;
-
-
function index()
-
{
-
-
}
-
}
ビューの作成
PCサイト用のtop/indexビューを作成します。
VIEWSディレクトリの中にtopディレクトリを作ります。
そのtopディレクトリにindex.ctpを置きます。
携帯サイト用のtop/indexビューは、app/mobile_views/topディレクトリに置きます。
PCサイト用のレイアウトファイルは、CakePHPが用意しているものを使うことにします。
携帯サイト用のレイアウトファイルは、新規に作成します。
mobile_viewsディレクトリの中にlayoutsディレクトリを作り、そこにレイアウトファイル(default.ctp)を置きます。
ブラウザ表示サンプル
Firefoxで接続すると、次のような表示となります。

iモードHTMLシミュレータⅡで接続すると、次のような表示となります。

ダウンロード
アーカイブへのリンクをダウンロード(「CakePHPで携帯サイトを作る」のサンプル)に移動しました(2009/02/11)。