5

特定の状況下でカートに入れる必要がある特定の製品が 1 つあります。Ubercart api のドキュメントを見てきましたが、チェックアウト前に特定のアイテムが存在するかどうかを確認するための明白な場所となるフックは見当たりません。

最初のアイテムが追加されるたびに hook_add_to_cart フックを使用して特別なアイテムを追加できますが、訪問者がアイテムを削除してから、必要なアイテムなしで購入を完了する可能性があることを懸念しています。

チェックアウト時に特別なアイテムがカートに入っていることを確認する方法はありますか?

4

3 に答える 3

3

モジュールを用意して、次のように実行できます。

function mymodule_init() {
   if (preg_match('/checkout/', request_uri()) {
      $items = uc_cart_get_contents();
      foreach ($items as $item) {
         // code
      }
   }
}

これはチェックアウト ページで起動し、カートの内容を取得します。チェックアウト ページにアクセスするたびに、uc_cart_get_contents() がカートの内容を返します。

http://www.ubercart.org/docs/api/uc_cart_get_contents

ただし、アイテム B がカートに入っているのにアイテム A が入っていない場合に、条件付きアクションを使用してチェックアウトを防止するなど、やりたいことを実行するためのより良い方法がおそらくあります。Product Kits も参照できますが、私はそれについてあまり経験がありません。

于 2010-09-23T20:40:52.280 に答える
2

あなたが言ったことから、主な製品に関連するアイテムがカートに保管されていることを確認する方法として、製品キットモジュールを調べる価値があるように思われます。

製品キットはubercartの一部として提供されており、モジュールページの「Ubercart--extra」にあります。これが良くない場合は、APIの使用について確認できます:)

于 2010-09-23T20:08:54.127 に答える
2

古い質問ですが、素晴らしい解決策を見つけました。

hook_uc_cart_item_delete()関数は、特定のエンティティが削除されたときに特に機能します。モジュールでこのフックを設定し、他のアイテムに依存する特定のエンティティが削除されているかどうかを確認してから、削除するアイテムでuc_cart_remove_item()を使用できます。

于 2013-07-31T06:53:47.107 に答える