SYSTEM_KDです。
今日は、EC-CUBEの小ネタを投稿。
EC-CUBE(バージョン2.11以降)で、スマホの対応が行われ、PC・スマホ・モバイル(ガラケー)の表示が行えるようになりました。
スマホが全面に出てきたイコール、モバイルの収束ということで、モバイルについてはパラメータでモバイルサイトを利用するかどうか、設定できるようになっております。
パラメータファイル上だと
/** モバイルサイトを利用するか(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 件のコメント:
コメントを投稿