5

在某些情况下,我有一种特定的产品需要放在购物车中。我一直在查看 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 不在,则使用条件操作来防止结帐。您也可以查看产品套件,但我对此没有太多经验。

于 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 回答