2014年9月25日木曜日

EC-CUBEにスマホでアクセスしてもPCサイトを表示するには

SYSTEM_KDです。

今日は、EC-CUBEの小ネタを投稿。

EC-CUBE(バージョン2.11以降)で、スマホの対応が行われ、PCスマホモバイル(ガラケー)の表示が行えるようになりました。

スマホが全面に出てきたイコール、モバイルの収束ということで、モバイルについてはパラメータでモバイルサイトを利用するかどうか、設定できるようになっております。

管理画面だと
parameter_cap

パラメータファイル上だと

/** モバイルサイトを利用するか(true:利用する、false:利用しない) (false は一部対応) */
define('USE_MOBILE', true);

部分になります。

では、スマホサイトを利用したくない場合はどうすれば良いでしょう?

そもそもそんな用途あるのか、という気もしますが、「PC側カスタマイズしてみたけど、スマホまで手が回らないから一時的に、PCページに飛ばしたい」とかあるかもしれません。

どうすれば良いかですが、わりきってしまえば意外と簡単です。

data/class/SC_Display.php の下記の場所をちょこっと変更します。

public static function detectDevice($reset = FALSE) {
if (is_null(SC_Display_Ex::$device) || $reset) {
$nu = new Net_UserAgent_Mobile();
$su = new SC_SmartphoneUserAgent_Ex();
if ($nu->isMobile()) {
SC_Display_Ex::$device = DEVICE_TYPE_MOBILE;
} elseif ($su->isSmartphone()) {
SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;
} else {
SC_Display_Ex::$device = DEVICE_TYPE_PC;
}
}
return SC_Display_Ex::$device;
}

変更する場所は、スマホのデバイスタイプを設定している箇所

SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;

を変更して、下記の様にします。

public static function detectDevice($reset = FALSE) {
if (is_null(SC_Display_Ex::$device) || $reset) {
$nu = new Net_UserAgent_Mobile();
$su = new SC_SmartphoneUserAgent_Ex();
if ($nu->isMobile()) {
SC_Display_Ex::$device = DEVICE_TYPE_MOBILE;
} elseif ($su->isSmartphone()) {
// 変更前 SC_Display_Ex::$device = DEVICE_TYPE_SMARTPHONE;
SC_Display_Ex::$device = DEVICE_TYPE_PC;
} else {
SC_Display_Ex::$device = DEVICE_TYPE_PC;
}
}
return SC_Display_Ex::$device;
}

これで、スマホでアクセスしてもPCのレイアウトへ遷移します。

簡単にできるだけに、弊害もあります。
最初に、わりきってしまえばと書いたのはそのためです。

その問題というのは、デバイスタイプを強制的にPCへ書き換えているので、受注データ作成時に設定されるデバイスがPCになってしまうというものです。

要するに、スマホで購入されても、管理画面の「受注管理」内にある「アクセス端末」が「PC」になってしまいます。

とはいえ、あんまり重要な情報でないような気もしますし、見る人はGoogle Analyticsとかでみるだろうから問題ないはず。

どうしても、ちゃんとした内容にしたいという人は、「SC_Helper_Purchase」の「saveOrderTemp」でデバイス情報をDBへ設定する際に、正しいデバイスを設定してやれば良いはず。
(未確認です。気が向いたら確認します!!)


1ステップの変更で対応できるなら、ちゃちゃっとプラグイン化したい所ですが、プラグインにしようとすると実は結構難しかったり。という話を近々やろうと思ってます。

0 件のコメント:

コメントを投稿