Drupal/Ubercart在结账时检查购物车中是否有某种产品

Ico*_*ood 5 php drupal ubercart

在某些情况下,我有一个特定产品需要放入购物车.我一直在查看Ubercart api文档,我没有看到任何钩子,这些钩子在结账前是否存在某个项目是显而易见的.

每当添加第一个项目时,我都可以使用hook_add_to_cart挂钩添加特殊项目,但我担心访问者可能会删除该项目,然后在没有所需项目的情况下完成购买.

有什么建议如何确保特殊项目在结帐时在购物车中?

Kev*_*vin 3

你可以有一个模块并运行类似的东西:

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

这将在结账页面上启动,并获取购物车内容。每次他们点击结帐页面时,uc_cart_get_contents() 都会返回购物车内容。

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

不过,可能有更好的方法来完成您想做的事情,例如,如果商品 B 在购物车中但商品 A 不在购物车中,则使用条件操作来阻止结帐。您还可以查看产品套件,但我对此没有太多经验。