pukiwkiの携帯用skinを設定する のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- pukiwkiの携帯用skinを設定する へ行く。
- 1 (2009-01-09 (金) 20:13:10)
- 2 (2009-01-09 (金) 20:31:00)
- 3 (2009-02-22 (日) 15:18:05)
pukiwkiの携帯用skinを設定する †
pukiwikiの携帯用skinを設定します。
まあ、基本的には「pukiwiki.ini.php」でアクセスされたブラウザ毎にskinを設定できて、デフォルト設定だと、DOCOMO、SOFTBANKの携帯からは携帯用skinが表示されるようになっています。
1世代前に使っていたN73ではちゃんと携帯用skinで表示されたのですが、現在当方が所有する愛機「E71」では、デフォルトでは携帯用skinで表示してくれなかったんですよ。
というわけで、pukiwikiの仕組みの勉強もかねて、設定してみました。
ちなみに、当方のSIMカードはSOFTBANK契約です。(J-PHONE時代からかわってません)
skinの振り分けの仕組み †
pukiwiki.ini.phpの約430行目以降に、各ブラウザ(web-server用語的にはagentと呼ぶらしい)ごとのskinを定義してます。
たとえば、デフォルトのVodafoneの表示設定は以下のようになってます。
$agents = array( ##中略 // Vodafone's embedded browser // Sample: "J-PHONE/2.0/J-T03" // 2.0は"ブラウザの"バージョン // Sample: "J-PHONE/4.0/J-SH51/SNxxxx SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0" array('pattern'=>'#^(J-PHONE)/([0-9\.]+)#', 'profile'=>'keitai'),
最初の3行はコメントで、最後の1行が有効行です。
意味としては、簡単に言うと、「agent」という変数の「pattern」に「J-PHONE」とその後に「0~9」があった場合、「profile」に「keitai」をセットしなさい、ってことです。
ってことは、表示できてもよさそうなもんですが、表示できないってことは、
- E71でアクセスした際の「pattern」は「J-PHONE」ではない
ってことになるんですね~
じゃあ、E71の「pattern」は何なんだ!って話になるわけです。
E71のagentのpatternを調べる †
じゃあ、E71の「pattern」を調べてみました。
まずあたりをつけたのは、apacheのアクセスログ。(当サイトはapacheで動作してます)
apacheのアクセスログの設定を調べてみると、実は簡単にagentの情報をログに出力できることが判明しました。
対象ファイルは
- httpd.conf
です。
うちの設定ファイルでは、変更対象箇所は514行目辺りにありました。
変更内容は以下の通りです。
□変更前 #CustomLog logs/agent_log agent □変更後 CustomLog logs/agent_log agent
つまり、変更内容は、この行のコメントアウトをとっただけです笑
これで、apacheのログ出力ディレクトリに「agent_log」ってログファイルが出力されるようになります。
へ~、簡単。
そして、さっそくE71より当サイトにアクセスを実施。その結果のログは以下の通り。
SoftBank/1.0/705NK/NKJ001 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
へ~、「SoftBank?」って最初に入るんだ笑
pukiwiki.ini.phpへの設定追加 †
先にしらべたagentが来たときに、携帯用skinがロードされるように、pukiwiki.ini.phpの480行目付近に
array('pattern'=>'#^(SoftBank)/([0-9\.]+)#', 'profile'=>'keitai'),
を追加します。
これで、携帯からアクセスすると、だいぶシンプルな「''携帯用スキン`'」で表示されます。
E71の場合の追加の設定 †
先の設定でE71を使って表示させると、文字化けして表示されます。
え〜
と言うわけで、keitai.skin.phpを覗いてみる。
ふむふむ、なるほど。
標準で付属されている「keitai.skin.php」では、携帯の日本語ブラウザを対象としているため、85行目〜92行目あたりで、強制的に文字コードをSJISにエンコードしてるんですね〜
(※うちのPUKIWIKIはUTF8版を使ってます)
これが、E71的にはかなり余計笑
というわけで、87行目〜89行目の文字コードエンコードの部分を「//」でコメントアウトします。
// header('Content-Type: text/html; charset=Shift_JIS'); // $title = mb_convert_encoding($title, 'SJIS', SOURCE_ENCODING); // $body = mb_convert_encoding($body, 'SJIS', SOURCE_ENCODING);
ちなみに、E71対象でなければ子の操作はいりません。
とりあえず、これで表示はできるようになった!
やった〜
しかし、ちょっと表示の表現力がしょぼい気が・・・
というわけで、次のテーマはcssの編集かな〜