バージョン選択

フォーラム

メニュー

オンライン状況

120 人のユーザが現在オンラインです。 (111 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 120
もっと...

サイト内検索

質問 > フロント機能 > スマフォで

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mini777
投稿日時: 2012/1/13 12:11
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
スマフォで
いつもお世話になっております。

スマフォでデフォルトはスマフォ版のサイトで、リンクかボタンなどでPC版のサイトに切り替える機能を追加したいのですが
素人なのでどこから手を付ければ良いか悩んでいます。

お分かりになる方いましたらアドバイスを頂きたく思います。

EC-CUBEバージョン 2.11.4
PHPバージョン PHP 5.3.6

よろしくお願いします。

AMUAMU
投稿日時: 2012/1/13 15:35
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: スマフォで
SC_Display.php 内のdetectDevice()で機種判別をして、各種動作は、その結果に従います。

判別部分において、切り替え要求があったばあいに、強制的にPCとなるようにカスタマイズする形が妥当かと思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

mini777
投稿日時: 2012/1/16 11:24
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: スマフォで

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;
    } else {
        return DEVICE_TYPE_PC;
    }
}

detectDevice()関数のreturn DEVICE_TYPE_SMARTPHONE;
の前に切り替えフラグ的な物を追加してこのフラグがon(true)だったら
return DEVICE_TYPE_PC;
off(false)だったら
return DEVICE_TYPE_SMARTPHONE;
みたいなことでしょうか?
mini777
投稿日時: 2012/1/16 20:10
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: スマフォで
とりあえず全ページにあるヘッダーに仮のボタンを置き
$_POST['display_mode']で$_SESSION['pc_disp']を切り替えようと考えました。

$nu = new Net_UserAgent_Mobile();
if( $nu->isSmartphone() ) {
    if ($_POST['display_mode'] === "PC") {
        $this->message .= "
            <form action=\"\" method=\"post\">
            <input type=\"hidden\" name=\"display_mode\" value=\"SP\"></input>
            <input type=\"submit\" value=\"SP版\"></input>";
            //</form>
    } else {
        $this->message .= "
            <form action=\"\" method=\"post\">
            <input type=\"hidden\" name=\"display_mode\" value=\"PC\"></input>
            <input type=\"submit\" value=\"PC版\"></input>";
            //</form>
    }
}

仮でLC_Page_FrontParts_Bloc_LoginHeader.phpでボタンを作っています。</form>で閉じると送信したときエラーになってしまいます。

function detectDevice(){
    $nu = new Net_UserAgent_Mobile();
    $su = new SC_SmartphoneUserAgent_Ex();
    $retDevice = 0;
    if ($nu->isMobile()) {
        return DEVICE_TYPE_MOBILE;
    } elseif ($su->isSmartphone()) {
        if ($_POST['display_mode'] === "SP") {
            SC_SmartphoneUserAgent_Ex::setPcDisplayOff();
            return DEVICE_TYPE_SMARTPHONE;
        } elseif ($_POST['display_mode'] === "PC") {
            SC_SmartphoneUserAgent_Ex::setPcDisplayOn();
            return DEVICE_TYPE_PC;
        } else {
            return DEVICE_TYPE_SMARTPHONE;
        }
    } else {
        return DEVICE_TYPE_PC;
    }
}

$_POST['display_mode']に"SP","PC"と入っていたらそれぞれ対応する機種IDを返しSC_SmartphoneUserAgent_Ex::setPcDisplayOn(), SC_SmartphoneUserAgent_Ex::setPcDisplayOff() で$_SESSION['pc_disp'] を切り替えています。
・</form>を閉じるとエラーになる理由
・うまく切り替わらない理由
が分からなくて対処方も分からず詰まっています。
どう対処すれば良いかご教授頂きたく思います。
よろしくお願いします。
AMUAMU
投稿日時: 2012/1/17 7:22
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: スマフォで
エラーの内容が分かりませんが、恐らくTRANSACTION_IDチェックエラーのような?

POSTする処理はTRANSACTION_IDを入れるか、そのチェックを意図的に外す処理を足す必要があります。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

mini777
投稿日時: 2012/1/17 10:33
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: スマフォで

<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />

を付加することでPC版に切り替わりました。
しかし、スマフォ版に戻すことが出来なかったです。

function getSmartphonePcFlag() {
    $_SESSION['pc_disp'] = empty($_SESSION['pc_disp']) ? false : $_SESSION['pc_disp'];
    $_SESSION['pc_disp'] = false;  // ※
    return $_SESSION['pc_disp'];
}

※を追加するとスマフォ版に戻す事が出来ました。
あとPC版に切り替えて他のページを見るとスマフォ版に戻ってしまうのは値を保持出来ていないから
なのでしょうか?
AMUAMU
投稿日時: 2012/1/17 12:59
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: スマフォで
引用:
※を追加するとスマフォ版に戻す事が出来ました。
あとPC版に切り替えて他のページを見るとスマフォ版に戻ってしまうのは値を保持出来ていないから
なのでしょうか?


そうだと思いますが、まずは試して不明な点を質問されると良いと思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

mini777
投稿日時: 2012/1/17 13:21
対応状況: −−−
一人前
登録日: 2011/11/16
居住地:
投稿: 71
Re: スマフォで
どうやら値を保持出来ていなかったみたいです。
$_SESSION['pc'] にpc版の時は10を
$_SESSION['pc'] にsp版の時は2を
保持しておくようにしました。
これは別の問題ですが
sp版とpc版の切り替えがtopページからしか出来ません。
$_SESSION['pc']には対応した値はちゃんと入っていました。
SC_Display_Ex::detectDevice()

function detectDevice(){
    $nu = new Net_UserAgent_Mobile();
    $su = new SC_SmartphoneUserAgent_Ex();
    $retDevice = 0;
    if ($nu->isMobile()) {
        return DEVICE_TYPE_MOBILE;
    } elseif ($su->isSmartphone()) {
        if ($_GET['display_mode'] === "2") {
            return DEVICE_TYPE_SMARTPHONE;
        } elseif ($_GET['display_mode'] === "10") {
            return DEVICE_TYPE_PC;
        } else {
            if ($_SESSION['pc'] === "10") {
                return DEVICE_TYPE_PC;
            } elseif ($_SESSION['pc'] === "2") {
                return DEVICE_TYPE_SMARTPHONE;
            } else {
                return DEVICE_TYPE_SMARTPHONE;
            }
        }
    } else {
        return DEVICE_TYPE_PC;
    }
}

最初は$_GETの値,$_GETの値を$_SESSIONに格納した後は$_SESSIONの値でifしています。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,029名です
総投稿数は110,282件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1677
8
red
1570
9
mcontact
1343
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.