Php Drupal/Ubercart在结账时检查购物车中是否有特定产品

Php Drupal/Ubercart在结账时检查购物车中是否有特定产品,php,drupal,ubercart,Php,Drupal,Ubercart,我有一个特定的产品,在某些情况下需要在购物车中。我一直在看Ubercart api文档,但我没有看到任何挂钩,可以在结帐之前查看某个项目是否存在 我可以使用hook_add_to_cart钩子在添加第一个项目时添加特殊项目,但我担心访问者可能会删除项目,然后在没有所需项目的情况下完成购买 关于如何在结账时确保特殊物品在购物车中的任何建议?从您所说的内容来看,似乎product kit模块非常值得研究,以确保与主产品相关的任何物品都保存在购物车中 产品套件是ubercart的一部分,您可以在模块页

我有一个特定的产品,在某些情况下需要在购物车中。我一直在看Ubercart api文档,但我没有看到任何挂钩,可以在结帐之前查看某个项目是否存在

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


关于如何在结账时确保特殊物品在购物车中的任何建议?

从您所说的内容来看,似乎product kit模块非常值得研究,以确保与主产品相关的任何物品都保存在购物车中


产品套件是ubercart的一部分,您可以在模块页面的“ubercart-extra”下找到它。如果这不好,那么我们可以了解如何使用API:)

您可以拥有一个模块并运行类似以下内容:

function mymodule_init() {
   if (preg_match('/checkout/', request_uri()) {
      $items = uc_cart_get_contents();
      foreach ($items as $item) {
         // code
      }
   }
}
这将在结帐页面启动,并获取购物车内容。每次他们点击结帐页面时,uc_cart_get_contents()都会返回购物车内容


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

一个老问题,但我找到了一个很好的解决方案


删除某些实体时,特定于这些实体的功能。您可以在模块中设置此挂钩,检查要删除的依赖于其他项目的特定实体,然后在要删除的项目上使用。

我认为产品套件模块在我的情况下不起作用,但感谢您的建议,这可能是我可以获得如何实施解决方案的一些想法的地方。