トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

pukiwkiの携帯用skinを設定する のバックアップの現在との差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*pukiwkiの携帯用skinを設定する [#z0c3e4e1]

pukiwikiの携帯用skinを設定します。

まあ、基本的には「''pukiwiki.ini.php''」でアクセスされたブラウザ毎にskinを設定できて、デフォルト設定だと、DOCOMO、SOFTBANKの携帯からは携帯用skinが表示されるようになっています。

1世代前に使っていたN73ではちゃんと携帯用skinで表示されたのですが、現在当方が所有する愛機「E71」では、デフォルトでは携帯用skinで表示してくれなかったんですよ。

というわけで、pukiwikiの仕組みの勉強もかねて、設定してみました。

ちなみに、当方のSIMカードはSOFTBANK契約です。(J-PHONE時代からかわってません)

***skinの振り分けの仕組み [#s312b266]

''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を調べる [#f077df11]
じゃあ、''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への設定追加 [#o4996ae8]

先にしらべたagentが来たときに、携帯用skinがロードされるように、pukiwiki.ini.phpの480行目付近に

 array('pattern'=>'#^(SoftBank)/([0-9\.]+)#',	'profile'=>'keitai'),

を追加します。

これで、携帯からアクセスすると、だいぶシンプルな「''携帯用スキン`'」で表示されます。

***E71の場合の追加の設定 [#rdf562a8]

先の設定で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の編集かな〜

-[[pukiwikiのkeitai.skin用CSS作成]]