2009年6月25日
【symofny】携帯サイト作成プラグイン - sfJpMobilePlugin
= sfJpMobilePlugin: 携帯サイト作成支援のsymfony用プラグイン == こんなもの symfonyで携帯サイトを作った際に作ったものをプラグインとして抜き出したもの。 自分の仕事で利用しているので、下位機種はもとより、中位機種の対応すら考慮されてません。 キャリア判別にはファイアーウォール側でIP判別を行っているので、IPによる判別機能はもっていません。 == 実装機能 * UserAgentによるキャリア判別 * 端末IDの取得 * 契約者番号の取得 * セッションへの対応 * 絵文字の相互変換 * テンプレートの自動振り分け
リンク先の『設置方法』の通りなので難しいことはない。
設定ファイルのインデントを揃えること。
準備
「git」を利用するか、『download』から取得してアップロードするかで、「plugins/」に配置する。
設定ファイル
「apps/myapp/config/」以下のymlファイルを編集。
factories.yml
コントローラを変更する。
/* 利用するコントローラの変更 apps/*/config/factories.yml */
all: controlelr: 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
ラベル: Symfony
2009年6月16日
【symfony】プラグインのインストール
/* symfony コマンドからインストール*/$ symfony plugin:install [PluginName]// フルパス$ symfony plugin:install http://plugins.symfony-project.com/plugins/[PluginName]
参考元のリンクを見ると
$ symfony plugin-install symfony/sfNamePlugin
と言うのが有るが、symfony/xxxPluginという形式でプラグインを指定してはいけないらしい。
ともある。
「plugin-install」の時は良くて「plugin:install」で駄目になったのか、リンク先でインストールしようとしてる「sfFormExtraPlugin」で駄目なのか。
$ symfony plugin:install symfony/sfFormExtraPlugin
/* symfony プラグインを Subversion でインストール */
$ svn co http://svn.symfony-project.com/plugins/[PluginName]
参考
ラベル: Symfony
2009年5月29日
【EC-CUBE】カレンダーカスタマイズ
当月のカレンダーだけ表示
今月と来月の2つを表示しているところを1つにする。
「デザイン管理」->「ブロック編集」->「カレンダー」のブロック
/* カレンダーブロックの変更 */ // 変更前<!--{section name=num loop=$arrCalendar}-->// 変更後<!--{section name=num loop=1}-->
カレンダーの表示の自由度を高める
リンク先を参考にカスタマイズすると以下のようなことが可能になる。
【機能改良項目】 ・土曜日にスタイルシートクラスを付ける ・日曜・祝日は休業日ではない、あくまでもカレンダー上の「赤い日」 ・休業日はさらにスタイルシートクラスを追加 ・以上により、スタイルシートは4つとなり、クラスは以下のとおり 1)日曜祝日 = sun 2)土曜日 = sat 3)休業日 = off 4)その他 = 無指定 ・休業日は別途ファイルを読み込む。設定可能は以下のとおり。 1)毎週○○曜日休業 の設定追加 2)第○の▲曜日休業 の設定追加 3)上記該当日でも、特別に営業する日
CSSを追加して、「data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php」を変更して設定ファイル「data/calendar_conf.php」を作る。
カレンダーが、日曜日を週始め・土曜日を週終わりにしている場合で、土日を休日にするだけなら以下のような変更だけで可能。(太字が変更部分)
/* ECCUBE 2.3.2 「data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php」 L.130~*/
~(略)~
if ($this->lfCheckHoliday($month, $Day->day) || $Day->first || $Day->last) {
$arrCalendar[$j][$i]['holiday'] = true;
} else {
$arrCalendar[$j][$i]['holiday'] = false;
}
~(略)~
/* ECCUBE 2.4.0 「data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php」 L.130~ */
~(略)~
if ($this->lfCheckHoliday($year, $month, $Day->day) || $Day->first || $Day->last) {
$arrCalendar[$j][$i]['holiday'] = true;
} else {
$arrCalendar[$j][$i]['holiday'] = false;
}
~(略)~ラベル: オープンソース
登録 投稿 [Atom]
