2011年10月31日月曜日

WPtouchのAndroidタブレット対応

WPtouchはAndroid機を全て一緒くたにして振り分けてしまっているため、Androidタブレットの場合でもスマートフォン用の画面になってしまう。10インチぐらいのタブレット機でスマートフォン用のサイトはあまり使いやすい物ではない場合が多い。

そこでタブレットの時は普通のテーマで表示してもらうようにWPtouchのソースを少しいじった。

スマートフォン(小画面)のAndroidのUserAgent(UA)にはmobileという語句が入る。なので、UAに「Android」と「mobile」が入っている時だけ、WPtouchのテーマで出力してもらうようにした。

まず、UAの定義をしている265行目function bnc_wptouch_get_user_agents()の中で"Android"のところを
array("Android","mobile")
とする。

次に569行目のfunction detectAppleMobileの中のforeach内で機種判別をしているので、そこをいじる。
foreach ( $useragents as $useragent ) {
   if (is_array($useragent)) {
    if ( (preg_match( "#$useragent[0]#i", $container ) && preg_match( "#$useragent[1]#i", $container ))|| file_exists( $devfile ) ) {
     $this->applemobile = true;
     break;
    }
   } else {
    if ( preg_match( "#$useragent#i", $container ) || file_exists( $devfile ) ) {
     $this->applemobile = true;
     break;
    }
   }
  }

これでなんかうまくいきました。

ちなみにWPtouch 1.9.34です。