在某些情况下,我有一个特定产品需要放入购物车。我一直在查看Ubercart api文档,我没有看到任何钩子,这些钩子在结账前是否存在某个项目是显而易见的。
每当添加第一个项目时,我都可以使用hook_add_to_cart挂钩来添加特殊项目,但我担心访问者可能会删除该项目,然后在没有所需项目的情况下完成购买。
如何确保特价商品在结帐时在购物车中?
答案 0 :(得分: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没有,则使用条件行动来防止结账。您也可以查看产品套件,但我对此没有太多经验。
答案 1 :(得分:2)
根据您的说法,听起来好像产品套件模块可能非常值得研究,以确保与主要产品相关的任何物品都保存在购物车中。
产品套件是ubercart的一部分,您可以在“Ubercart - extra”下的模块页面上找到它。如果这不好,那么我们可以看到使用API:)
答案 2 :(得分:2)
一个老问题,但我找到了一个很好的解决方案。
hook_uc_cart_item_delete()在移除某些实体后专门针对某些实体发挥作用。您可以在模块中设置此挂钩,检查要删除的特定实体是否依赖于其他项目,然后对要删除的项目使用uc_cart_remove_item()。