もはやネタ切れなので、やったことないネタを開発者フォーラムから拾ってみた。
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表示」というリンクを踏めば、セッションにフラグを持つようにして、
端末判定の分岐条件時にそれを考慮するようにする、という感じでどうでしょうか。
早速のご意見ありがとう御座います。
色々方法を探していて、頂いたご意見のような方法は見つかるのですが、実際どういう内容のカスタマイズをすれば良いかがわかりません・・。
具体的にどういう修正を施したら良いか、お知恵をお貸し頂けないでしょうか?
よろしくお願いします。
うーん、コードを書いて、実際に検証するとなると、
結構まとまった時間がかかるので・・・。
ちょっと今は時間が取れそうにないので、すいません。
誰かプログラムに詳しい人に頼んでみてください。
返信わざわざ、ありがとうございました。
引き続き調べてみます。