2009年6月25日木曜日

 

【symofny】携帯サイト作成プラグイン - sfJpMobilePlugin

sfJpMobilePlugin - GitHub
= sfJpMobilePlugin: 携帯サイト作成支援のsymfony用プラグイン

== こんなもの
symfonyで携帯サイトを作った際に作ったものをプラグインとして抜き出したもの。
自分の仕事で利用しているので、下位機種はもとより、中位機種の対応すら考慮されてません。
キャリア判別にはファイアーウォール側でIP判別を行っているので、IPによる判別機能はもっていません。

== 実装機能
* UserAgentによるキャリア判別
* 端末IDの取得
* 契約者番号の取得
* セッションへの対応
* 絵文字の相互変換
* テンプレートの自動振り分け

リンク先の『設置方法』の通りなので難しいことはない。
設定ファイルのインデントを揃えること。

準備

git」を利用するか、『download』から取得してアップロードするかで、「plugins/」に配置する。

設定ファイル

「apps/myapp/config/」以下のymlファイルを編集。

factories.yml

コントローラを変更する。

/* 利用するコントローラの変更 apps/*/config/factories.yml */
 all: controller: class: sfJpMobileController

セッションを使う為の設定。以下だと携帯でアクセスするとURLに「http://example.com?symfony=~」の様なセッションIDが付く。

/* セッションの利用 apps/*/config/factories.yml */
~(略)~
all: storage:
 class: sfJpMobileSessionStorage
 param: session_name: symfony # ここはお好きな名前で
~(略)~
filters.yml
/* フィルタの追加 apps/*/config/filters.yml */
~(略)~
# insert your own filters here
 jpmobile: 
   class: sfJpMobileFilter
~(略)~
app.yml

ビューの設定。

/* クラスの指定 apps/*/config/app.yml */
~(略)~
 all: view: class: sfJpMobile
~(略)~
setting.yml

ビューの設定。

/* ヘルパーの利用 apps/*/config/settings.yml */
~(略)~
  all: standard_helpers: [Partial, Cache, Form, JpMobileUrl]
~(略)~

レイアウトの変更

「app/my_app/templates/layout.php」のDOCTYPE宣言の部分を変更し、携帯キャリア毎に対応させる。

/* apps/*/templates/layout.php */
// 変更前
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
// 変更後
<?php include_partial('jpmobile/dtd') ?>

Firefoxアドオン・FireMobileSimulatorを使うとDOCTYPEは次の様になった。参考までに。

/* FireMobileSimulator で表示した時のDOCTYPE宣言比較 */
//docomo 機種
<?xml version="1.0" encoding="Shift_JIS"?><!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.1) 1.0//EN" "i-xhtml_4ja_10.dtd">
// au 機種 
<?xml version="1.0" encoding="Shift_JIS"?><!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtml-basic.dtd">
// Softbank 機種
<?xml version="1.0" encoding="Shift_JIS"?><!DOCTYPE html PUBLIC "-//JPHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd">

HTML「<head></head>」部分の「Content-Type」属性もdocomoのみ違いが有った。

/* FireMobileSimulator で表示した時のDOCTYPE宣言比較 */
// docomo 機種
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
// docomo 以外
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

キャリアごとのテンプレート振り分け

「apps/my_app/modules/my_mod/templates/」以下に次の様なファイル名を付けることで、各キャリアごとのテンプレートが振り分けることが可能。

/* テンプレート・ファイル名と参照順 */
DoCoMo:   indexSuccessDocomo.php
KDDI:     indexSuccessKddi.php
SoftBank: indexSuccessSoftbank.php
PC:       indexSuccessPc.php
 ∟携帯共通: indexSuccessMobile.php
   ∟通常:     indexSuccess.php
例) docomo でアクセスした場合の参照順
indexSuccessDocomo.php → indexSuccessMobile.php → indexSuccess.php

ラベル:


コメント:
「コントローラを変更する。」のfactories.ymlの記述で、controller とすべきところが controlelr になっています。 修正したところ動作しました。
 
>factories.ymlの記述で、controller とすべきところが controlelrになっています。

修正しました。ご指摘有難うございます。
 
コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google