宣伝方法のDream-Oグループサイト

カレンダー

8 | 2010/9 | 10
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

携帯サイト http://www.dream-o.com

HPのデザインを変えれます

theme176
    

関連サイト

cakephp 携帯ルーティング

2010-06-17 06:23:56

サイトにPC用と携帯用がある場合、PC用とは別に携帯用の表示を行う方法です。この方法なら同じコントローラ・アクションで、レイアウトとビューファイルを変更することができます。なお携帯版のURLは[/m/]で始まるようにします。

1.URLルーティングを設定する。

[app/config/routes.php]で[/m/]からURLが始まる場合にwebservicesとして扱うように設定します。

[app/config/routes.php]

PHP:
  1. <?php
  2. (snip)
  3. $Route->connect('/m/:controller/:action/*', array('webservices' => 'Mobile'));
  4. ?>

 

2.WEBSERVICESを有効にする。

webservicesがフレームワーク内でサポートされるように設定を変更します。

[app/config/core.php:123行目付近]

PHP:
  1. /**
  2. *  The define below is used to turn cake built webservices
  3. *  on or off. Default setting is off.
  4. */
  5. define('WEBSERVICES', 'on'); // off から on にします。

 

3.携帯用コンポーネント、ヘルパーを設置する。

携帯用コンポーネント、ヘルパーを設置します。これは単に表示を変えるだけなら不要なのですが、1.でwebservicesとして動作するように設定しているので必須となります。(クラス内はとりあえず空で良いです)

[app/controller/components/mobile.php]

PHP:
  1. <?php
  2. class MobileComponent extends Object
  3. {
  4. }
  5. ?>

 

[app/views/helpers/mobile.php]

PHP:
  1. <?php
  2. class MobileHelper extends Object
  3. {
  4. }
  5. ?>

 

4.携帯用レイアウト、ビューファイルを設置する。

携帯用レイアウト、ビューファイルを[app/views/layouts/mobile][app/views/%controller_name%/mobile]に設置します。双方ともmobile/ディレクトリ以下に設置するのがミソです。

これで[/post/index]にアクセスすればPC版のレイアウト・ビューファイルが、[/m/post/index]にアクセスすれば携帯版のレイアウト・ビューファイルが表示されるようになります。

>>

なぜwebservicesとして扱うか?

CakePHPには一つのコントローラ、アクションでrssやxmlといった多種の出力形式をサポートする機能があります。これがWEBSERVICESです。前出のrssやxmlはフレームワークで定義されているのですが、携帯用と思われるものはありませんでした。そこでroutes.phpのルーティング情報に携帯用を定義する方法を取っています。

この方法の良いところは、レイアウト・ビューファイルの切り替えはフレームワーク側でやってくれるのでコントローラ側では何も意識する必要が無い点です。悪い点はURLが[/m/~]になってしまう点でしょうか。
URLが[/m/]ではじまるのが気になる場合は、mod_rewriteで携帯からのアクセスの場合は自動的に[/m/]へ飛ばす設定にしておく、という方法もありです

  

この記事についてのコメント

コメントはありません
  

コメントの投稿

タイトル
名前
Eメール
URL
内容