もはやネタ切れなので、やったことないネタを開発者フォーラムから拾ってみた。
data/class/SC_Display.php の 144行目をコメントアウト。その下で DEVICE_TYPE_PC を返すように定義する。
function detectDevice(){ $nu = new Net_UserAgent_Mobile(); $su = new SC_SmartphoneUserAgent_Ex(); $retDevice = 0; if ($nu->isMobile()) { return DEVICE_TYPE_MOBILE; } elseif ($su->isSmartphone()) { //return DEVICE_TYPE_SMARTPHONE; return DEVICE_TYPE_PC; } else { return DEVICE_TYPE_PC; } }
ちなみに全ての端末でPCサイトを表示したければ、端末による条件分岐をやめて、常にDEVICE_TYPE_PC を返せばよい。
function detectDevice(){ return DEVICE_TYPE_PC; }
さらに、スマートフォンかどうかはどこで判断しているのかなと見てみたら、
data/module/Net/UserAgent/Mobile.php の 400行目付近にある isSmartphone メソッドでやってるみたい。
// }}} // {{{ isSmartphone() /** * Checks whether or not the user agent is Smartphone by a given user agent string. * * @param string $userAgent * @return boolean * @since Method available since Release 0.31.0 */ function isSmartphone($userAgent = null) { if (is_null($userAgent)) { $userAgent = @$_SERVER['HTTP_USER_AGENT']; } $useragents = array( 'iPhone', // Apple iPhone 'iPod', // Apple iPod touch 'Android', // 1.5+ Android 'dream', // Pre 1.5 Android 'CUPCAKE', // 1.5+ Android 'blackberry9500', // Storm 'blackberry9530', // Storm 'blackberry9520', // Storm v2 'blackberry9550', // Storm v2 'blackberry9800', // Torch 'webOS', // Palm Pre Experimental 'incognito', // Other iPhone browser 'webmate' // Other iPhone browser ); $pattern = implode("|", $useragents); return preg_match('/'.$pattern.'/', $userAgent); }
$_SERVER[‘HTTP_USER_AGENT’] を取得して、各スマートフォン固有の文字列とマッチするかどうかを調べてるのね。
【EC-CUBE 2.11.5】
スマートフォンとPCの振り分けで、
最初に同じURLでスマートフォンとPCを振り分けて、
スマートフォン用サイトに「PC表示」へのリンクを付けて、PCサイトにリンクすることは出来るのでしょうか?
やったことはないですが、できると思いますよ。
「PC表示」というリンクを踏めば、セッションにフラグを持つようにして、
端末判定の分岐条件時にそれを考慮するようにする、という感じでどうでしょうか。
早速のご意見ありがとう御座います。
色々方法を探していて、頂いたご意見のような方法は見つかるのですが、実際どういう内容のカスタマイズをすれば良いかがわかりません・・。
具体的にどういう修正を施したら良いか、お知恵をお貸し頂けないでしょうか?
よろしくお願いします。
うーん、コードを書いて、実際に検証するとなると、
結構まとまった時間がかかるので・・・。
ちょっと今は時間が取れそうにないので、すいません。
誰かプログラムに詳しい人に頼んでみてください。
返信わざわざ、ありがとうございました。
引き続き調べてみます。