4

ユーザーが「ありがとうページ」(カート/チェックアウト/完了) に送信されたら、注文に関する情報を取得して、サードパーティの追跡 API に送信する必要があります。問題は、この時点で、セッション内でも、私が知っている他の場所でも、注文に関する情報がないことです。回避策として、現在接続しているユーザーの最後の注文を照会しようとしましたが、Ubercart がオンザフライでアカウントを登録し、ユーザーがログに記録されていないため、ユーザーが登録解除されている場合、これは失敗します。

だから私の質問は、この時点 (カート/チェックアウト/完了) で Order オブジェクトを page-cart.tpl.php テンプレートから取得する方法はありますか?

これまでの私の解決策:

cart/checkout/review で $_SESSION['cart_order'] 変数を取得し、それを $_SESSION['faux_order'] に割り当て、cart/checkout/complete のスクリプトで faux_order を使用します ... キリンを見るのと同じくらい醜く感じます窒息死する。

4

2 に答える 2

4

警告!上記の回答は使用しないでください。説明については、私のコメントを参照してください。

上記の回答 (絶対に使用しないでください) の代わりに、カスタムの Ubercart 条件付きアクション (CA) を作成し、https://dev. betternow.org/admin/store/ca/overview

ここでは、カスタム CA を定義しています

function my_module_ca_action() {
    $order_arg = array(
        '#entity' => 'uc_order',
    '#title' => t('Order'),
    );


    $actions['my_module_status_update'] = array(
        '#title' => t('Some Title'),
    '#category' => t('Custom UC AC'),
    '#callback' => 'my_module_some_function_name',
    '#arguments' => array(
        'order' => $order_arg,
            ),
            );
        return $actions;
}

これで、モジュールで定義された独自のコールバック関数で注文 ID を使用できます。

function my_module_some_function_name(&$order, $settings) {
  echo "This is the order id: " . $order->order_id;
}

私自身、このアプローチを使用して、購入したばかりの製品へのリンクを含む「ありがとう」ページをユーザーに表示しています。

于 2011-06-23T09:02:29.587 に答える
0

$_SESSION['cart_order'] は注文確認ページで利用できます。

そう ...

次のように注文 ID を表す Cookie を作成します。

<?php setcookie('orderID', '$_SESSION['cart_order']'); ?>

次に、注文確認ページで、次のように保存された Cookie を呼び出すことができます。

<?php
if (isset($_COOKIE['orderID'])):
  $theOrder = $_COOKIE['orderID'));

  echo 'The order ID is: ' . $theOrder;
endif;
?>

その後、ユーザーが戻って新しい注文を作成すると、注文レビュー ページに到達するたびに Cookie が更新されます。

于 2015-02-05T16:07:20.100 に答える