====== DokuWikiを携帯電話からの閲覧に対応させる ======
DokuWikiをはじめ多くのWikiは、PCから利用することを前提に作られていて、基本的に携帯電話から閲覧することはあまり考えられていません。普通はそれで問題ないと思いますが、ウチの場合、[[http://tsukasa-nakanishi.blogspot.com/|現というか旧というか、このブログ]]を引き継ぐ関係で、ブログ記事を携帯電話からも閲覧できるようにしておきたいわけです。そこで、DokuWikiの記事を携帯電話から閲覧することができるように改造してみました。 ===== 概要 ===== PCからのアクセスと携帯電話からのアクセスは.htaccessで振り分けることができます。ならば、「PC用テンプレート」と「携帯用テンプレート」の2つを作成しておき、.htaccessでテンプレートを切り替えればいいじゃん!という発想から改造を思いつきました。 DokuWikiは * 使用するテンプレートファイル名を[red]conf/local.php[/red]に保存している * conf/local.phpは[red]inc/init.php[/red]が呼び出している * inc/init.phpは[red]doku.php[/red]が呼び出している という相関関係のもとに動いていますので、これらのファイルセットを「携帯用」として複製&改変しておき、.htaccessでどちらのファイルセットを使うかを振り分けようというわけです。 ===== DokuWikiをケータイ対応させるための手順 ===== ==== その1 必要なファイルを複製する ==== 携帯電話用のファイルセットとして必要なものは、次の3つです。 * doku.php * inc/init.php * conf/local.php これら3つのファイルを複製し、適当にリネームします。ここでは末尾に「_i」を付け、元ファイルと同じディレクトリに設置するという設定で話を進めます。 * doku_i.php * inc/init_i.php * conf/local_i.php ==== その2 複製したファイルを編集する ==== doku.phpがinc/init.phpを呼び出し、inc/init.phpがconf/local.phpを呼び出しています。従って、doku_i.phpがinc/init_i.phpを呼び出し、inc/init_i.phpがconf/local_i.phpを呼び出すように、それぞれのファイルを編集します。 ==== その3 携帯電話用のテンプレートを作成する ==== lib/tpl/内に、携帯電話用のテンプレートを保存するためのフォルダを作成し、その中に「main.php」という名前でテンプレートファイルを作成します。ウチでは、次のものを使っています。
モバイルStudio-ARZ
[ 中西進学塾 | Studio-ARZ ]
携帯電話用なんで、非常にシンプルですねw。
==== その4 conf/local_i.phpを編集する ====
conf/local_i.php内に、先ほどつくった携帯電話用のテンプレートを呼び出すように「$conf['template'] = '';」の部分を編集します。この行がなければ作成します。
==== その5 .htaccessを編集する ====
これは下手するとサーバ内の全てのアクセスがおかしくなりますので、きちんと理解できる人のみ自己責任で実践してください!! ウチの.htaccessの内容を載せておきます。参考にされてください。
RewriteEngine on
# RewriteBase /
# Mixi Mobile
RewriteCond %{HTTP_USER_AGENT} mixi-mobile-converter
RewriteRule ^$ doku_i.php?id=mixi-mobile-converter.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} mixi-mobile-converter
RewriteRule .* doku_i.php?id=mixi-mobile-converter.html [QSA,L]
# DoCoMo
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# Softbank
RewriteCond %{HTTP_USER_AGENT} J-PHONE
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} J-PHONE
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} J-PHONE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
RewriteCond %{HTTP_USER_AGENT} Vodafone
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} Vodafone
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} Vodafone
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
RewriteCond %{HTTP_USER_AGENT} SoftBank
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} SoftBank
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} SoftBank
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# AU KDDI
RewriteCond %{HTTP_USER_AGENT} KDDI
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} KDDI
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} KDDI
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
RewriteCond %{HTTP_USER_AGENT} UP.Browser
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} UP.Browser
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} UP.Browser
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# DDI Pocket
RewriteCond %{HTTP_USER_AGENT} DDIPOCKET
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} DDIPOCKET
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} DDIPOCKET
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# WILLCOM
RewriteCond %{HTTP_USER_AGENT} WILLCOM
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} WILLCOM
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} WILLCOM
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# WILLCOM
RewriteCond %{HTTP_USER_AGENT} PDA
RewriteRule ^$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} PDA
RewriteRule ^index.html$ doku_i.php?id=bliki:index_i.html [QSA,L]
RewriteCond %{HTTP_USER_AGENT} PDA
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku_i.php?id=$1 [QSA,L]
# PC
RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L]
RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L]
RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L]
RewriteRule ^$ doku.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) doku.php?id=$1 [QSA,L]
ちなみに、ウチのサイトの場合は、「bliki/index_i.html」に、携帯用のトップページファイルを置いていますので、携帯からはそこに転送させるようにしているわけです。
===== 問題点と今後の課題 =====
==== 文字コードについて ====
とりあえず、これで携帯電話からDokuWikiサイトを閲覧することができるようになりましたが、文字コードがUTF-8であるために、古いタイプの携帯電話では文字化けすると思われます。
==== 画像ファイルの大きさについて ====
また、そのままでは画像ファイルが大きすぎて携帯電話では表示されません。そこもうまく対応させることができたら完璧ですね!
==== mixiモバイルゲートウェイについて ====
.htaccess例を見れば判ると思いますが、mixiモバイル経由のアクセスは遮断しています。
{{tag>DokuWiki htaccess 携帯電話}}