1

ユーザーがURLをクリックしたときにカートデータをURLに置き換える必要がある放棄されたカートモジュールに取り組んでいます。カート オブジェクトを変数に入れることができ、URL をフェッチすることもできます。ユーザーがそのURLをクリックすると、URLがストアされているページのみが表示されます...ユーザーがクリックしたときにカートもそのままになるようにカートデータを置き換えるにはどうすればよいですか(たとえば、カートに2つの製品がある場合)ユーザーがURLをクリックして久しぶりに来たときよりも、私がカートに送信したものには2つの製品が含まれていたため、ユーザーはそれを手動で再度追加する必要はありません)。

//To Get Cart Object
$cart = VirtueMartCart::getCart();

//To Store Cart data into database
$d=json_encode($cart);

// Function to get url
function curPageURL()
    {
         $pageURL = 'http';
         if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
         $pageURL .= "://";
         if ($_SERVER["SERVER_PORT"] != "80")
         {
         $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
         }
         else
         {
          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
         }
            return $pageURL;
    }
    {
        echo curPageURL();
        exit;
    }

ユーザーが製品を手動で追加する必要がないように、カートオブジェクトをURLに置き換えるにはどうすればよいですか。

私は使っている

ジュムラ 2.5.8

PHP 5.4.3

バーチューマート 2.0.14

4

1 に答える 1

1

質問を正しく理解している場合は、カートをクエリ変数として URL に追加するだけです。次のようなものを試してください:

//To Get Cart Object
$cart = VirtueMartCart::getCart();

//To Store Cart data into database
$d=json_encode($cart);

$url = curPageUrl() . '&cart=' . $d;

リンクでカートの値を設定する場合は、ページの読み込み時にクエリ文字列でカート変数を確認し、次のような方法でカートを初期化する必要があります。

$app = JFactory::getApplication();
$imp = $app->input;
$cart = $imp->get('cart','')
if($cart!=''){
    $cart = json_decode($cart);
    // initialize the VirtualMartCart from the $cart variable
    // .
    // .
}

モジュールを使用してクエリ文字列を処理し、同じページに表示される他のコンポーネントで使用される可能性のあるショッピング カートを初期化する場合、いくつかの問題が発生する可能性があることに注意してください。

于 2013-05-30T22:42:47.817 に答える