EC-CUBE 2.13はスマートフォンに対応しています。
仕組みとしてはエージェントを確認して、スマフォの場合はスマフォ用のページを、PCの場合はPC用のページを表示してあげるという切り替えを行っています。
この辺の処理は/data/class/SC_Display.phpに書いてあります。
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; }
DEVICE_TYPE_PCがサイトを閲覧しているデバイスがPCであることを、DEVICE_TYPE_SMARTPHONEがスマフォからの閲覧であることを表しています。
なので、このDEVICE_TYPE_SMARTPHONEのところをDEVICE_TYPE_PCに置き換えるとスマフォで見ても全部PC用のデザインにすることもできます。
DEVICE_TYPE_MOBILEはいわゆるガラケーです(最近はガラケー需要も減ってきたので、今回の記事はガラケーについては利用しない前提で進めます)。
ここで、ページ単位でスマフォ用のレイアウトを表示するかしないかを区別する必要があったとします。
個人的にはページ別の処理などは/data/class/pages/以下の各ページ用のコントローラークラスに記述したいところですが、どうもすんなり行かない。
というわけで、SC_Display.phpに判定を入れることにしました。
URLを判定してケース分けすることもできますが、ここはPageクラスのクラス名で判定してみることに。
prepareメソッド内に判定を一つ追加。
public function prepare($page, $is_admin = false) { if (!$this->deviceSeted || !is_null($this->view)) { $device = ($is_admin) ? DEVICE_TYPE_ADMIN : $this->detectDevice(); // トップページだけスマフォレイアウトを使わない if(get_class($page) == "LC_Page_Index_Ex") { $device = DEVICE_TYPE_PC; }
タイミング的にどうかなぁという気もするので、参考程度にしてください。
Please give us your valuable comment