EC-CUBE:スマホ・テンプレートを簡単に無効化(レスポンシブデザイン用)

EC-CUBE(Ver2.11,2.12系)ではPC用とスマホ用で別々のテンプレートセットが用意されていますが、レスポンシブWebデザイン用に1つのPC用テンプレートのみでスマホにも対応させる方法があります。

それは、EC-CUBE管理画面の「システム設定」→「パラメータ設定」で以下の2箇所を変更するだけ。

定数名 パラメーター値
SMARTPHONE_TEMPLATE_NAME default (or 使用中のPC用テンプレートセット名)
DEVICE_TYPE_SMARTPHONE 10

他のサイトではSC_Display.phpを変更する方法が掲載されていますが、これだと元ソースをいじることになってしまうため、メンテナンス性が悪くなってしまいます。

【注意】
ただし、この方法でも懸念が無くなるわけではありません。
それは、スマホ用のデバイスタイプ番号を「2」、テンプレート名を「sphone」である前提で作ってあるプラグインやモジュールが組み込んである場合です。
これはそのプラグインやモジュールの製作者が柔軟でない設計で作ってしまったのが原因なのですが、こちらの一方的な都合でわざわざ「柔軟に設計しなおしたバージョンを作ってくれ」とは言えないのです。
したがって、この場合は対象のプラグインやモジュールの拡張クラスを利用するなどして独自カスタマイズする必要があります。

プログラムコードでもパラメーターを変更できる

これらのパラメーター設定はデータベーステーブル「mtb_constants」に格納されているので、以下のようにしてプログラムから変更することが可能です。

$objQuery =& SC_Query_Ex::getSingletonInstance();
$table   = 'mtb_constants';
$arrVal = array('name'=>10);
$where = "id = 'DEVICE_TYPE_SMARTPHONE'";
$objQuery->update($table, $arrVal, $where);
$arrVal = array('name'=>'"default"');
$where = "id = 'SMARTPHONE_TEMPLATE_NAME'";
$objQuery->update($table, $arrVal, $where);

これでもダメならUser-Agent情報を削除する

もし、この方法でも問題がある場合はEC-CUBEのドキュメントルート(htmlフォルダ直下など)にある「.htaccess」ファイルに「リクエストヘッダーからユーザーエージェント情報を削除する方法」を使って、スマホアクセス時のみユーザーエージェント情報を削除してPCレイアウトを表示させることができます。

EC-CUBEではリクエストヘッダーのユーザーエージェント情報の中でiPhoneやAndroidの文字列を見つけてデバイスのタイプを判定しています。

お役に立てば幸いです。 では!

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2013-06-05