【问题标题】:Drupal/Ubercart Check if a certain product is in the cart on checkoutDrupal/Ubercart 在结账时检查特定产品是否在购物车中
【发布时间】:2011-04-16 11:18:15
【问题描述】:

我有一种特定产品需要在特定情况下放入购物车。我一直在查看 Ubercart api 文档,但没有看到任何钩子可以明显地在结帐前查看某个项目是否存在。

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

有什么建议可以在结账时确保特殊物品在购物车中?

【问题讨论】:

    标签: php drupal ubercart


    【解决方案1】:

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

    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 不在时结帐。您也可以查看产品套件,但我对此没有太多经验。

    【讨论】:

      【解决方案2】:

      从您所说的看来,产品套件模块可能非常值得研究,以确保与主要产品相关的任何物品都保留在购物车中。

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

      【讨论】:

      • 我认为产品套件模块不适用于我的情况,但感谢您的建议,这可能是我可以了解如何实施解决方案的地方。
      【解决方案3】:

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

      hook_uc_cart_item_delete() 在某些实体被删除时特别起作用。你可以在你的模块中设置这个钩子,检查依赖于其他项的被删除的特定实体,然后在你想删除的项上使用uc_cart_remove_item()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 2011-04-09
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多