スマートフォンでPCサイトを表示 [EC-CUBE 2.11.5]


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。
$_SERVER[‘HTTP_USER_AGENT’] を取得して、各スマートフォン固有の文字列とマッチするかどうかを調べてる。

// }}}
// {{{ 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);
}