Labo

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

2012年05月05日 / 投稿者名:fukap


もはやネタ切れなので、やったことないネタを開発者フォーラムから拾ってみた。

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 メソッドでやってるみたい。

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

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

[EC-CUBE 2.11.5] スマートフォンでPCサイトを表示 への5件のコメント

  1. チャンク より:

    【EC-CUBE 2.11.5】
    スマートフォンとPCの振り分けで、
    最初に同じURLでスマートフォンとPCを振り分けて、
    スマートフォン用サイトに「PC表示」へのリンクを付けて、PCサイトにリンクすることは出来るのでしょうか?

  2. fukap より:

    やったことはないですが、できると思いますよ。
    「PC表示」というリンクを踏めば、セッションにフラグを持つようにして、
    端末判定の分岐条件時にそれを考慮するようにする、という感じでどうでしょうか。

  3. チャンク より:

    早速のご意見ありがとう御座います。

    色々方法を探していて、頂いたご意見のような方法は見つかるのですが、実際どういう内容のカスタマイズをすれば良いかがわかりません・・。

    具体的にどういう修正を施したら良いか、お知恵をお貸し頂けないでしょうか?

    よろしくお願いします。

  4. fukap より:

    うーん、コードを書いて、実際に検証するとなると、
    結構まとまった時間がかかるので・・・。
    ちょっと今は時間が取れそうにないので、すいません。
    誰かプログラムに詳しい人に頼んでみてください。

  5. チャンク より:

    返信わざわざ、ありがとうございました。
    引き続き調べてみます。

コメントを残す

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

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。