CakePHPでモバイルサイト開発 – 1日目 -

さっそくプログラムしていく。

1. prefixを有効にする

prefixを有効にするために [app/config/routes.php] に以下を記述する。

参考 http://phptips.seesaa.net/article/102607319.html

[app/config/routes.php]

この設定により、/m/にアクセスすると、prefixに指定した接頭語がついたメソッドが実行される。

PCページとモバイルページでURLを変えたいときに使える。

※今回やりたいことには必要ない気もしたが、せっかくなので使ってみた。

2. アクションをつくる

1のprefixが有効ならば、/m/にアクセスすると[prefix_action]メソッドがよみこまれる。[/m/hoge/foo]にアクセスするためのアクションを例に示す。

3. ビューをつくる

ビューに関しても[prefix_action]でビューを用意すればOK。

2に対応したビューが欲しいときは、[app/views/hoge/mobile_foo.ctp]を用意しよう!

4. レイアウトをつくる

今回はdocomo向けページをつくります。

XHTML1.0で、文字コードはShift_JISにします。

[app/views/layout/mobile_base.ctp]

あとは必要なときにレイアウトをよべばOK。

controllerで[$this->layout = 'mobile_base']とかすれば大丈夫!

5. 表示をととのえる

これでOKだろうと思い、モバイルのページを用意してアクセスしたところ、styleが反映されていなかった。

どうやら、サーバー側で正しいHTTPヘッダが送られていないらしい。

.htaccessに[AddType application/xhtml+xml .html]を追加すればいいらしいが、今回はheaderメソッドを使った。

styleは反映されたが、今度は文字化けがおこった。

文字コードはEUC-JPのPC向けページと同じところにつくっているせいか、EUC-JPで出力されているみたいだ。

なんとかShift_JISで表示させるために、ob_start()で出力をバッファに記憶して、ob_get_contents()で取り出した文字列をmb_convert_encodingしてみた。

参考 http://www.ideaxidea.com/archives/2008/04/phpob_start.html

[app/views/layout/mobile_base.ctp]

これで期待通りの表示を得ることが出来た!

今日やったのはとりあえずここまでです。

6. おまけ

アクセスをdocomoのIPアドレスのみに制限するメソッドを書いた。

今思ったけど、$_SERVER['REMOTE_ADDR']に何回もアクセスするのってどうなんだろうか?

$access_id = $_SERVER['REMOTE_ADDR'];

とかして、変数に入れてforeachしたほうがいいかなー。

Pocket

Posted in CakePHP.

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">