- 追加された行はこの色です。
- 削除された行はこの色です。
*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作成]]