函数hook_add_to_cart()位于uc_cart.module:
<?php
hook_add_to_cart($nid, $qty, $data)
?>
描述:
当向购物车中添加商品时,有些模块需要在这里流程中,进行一些逻辑处理。例如,一个库存系统,需要在此时检查库存情况,以防止将已经脱销的商品添加到购物车中。使用这个钩子,开发者可以在添加到购物车这一流程的最后阶段,进行一些逻辑处理,此时已经完整地加载了该商品的信息,并且该商品即将被添加到购物车上。如果该商品由于一些原因,不能被添加到购物车的话,你可以按照下面的描述,简单的返回一个失败信息。当然,也可以使用这个钩子,在商品被添加到购物车的时候,简单的进行一些日常处理。
参数:
· $nid -该商品的节点 ID
· $qty - 该商品添加到购物车中的数量
· $data -数据输租,里面包含了属性和型号调整
返回值:
无论你是出于什么目的,都可以使用这个函数来查看商品是否应该被添加到购物车中。这个函数应该返回一个包含结果数组的数组(这一点是由于Drupal的module_invoke_all()函数的特点决定的。你必须返回一个数组的数组,否则的话其它模块中的数据将被忽略掉。)现在,这个数组有两个键:
· success -当商品可以添加到购物车时返回TRUE,否则返回FALSE;默认为TRUE。
· message -当添加失败时,显示的失败信息;如果忽略的话,Ubercart将显示一个默认的失败信息。
· silent -返回TRUE时,将不会显示任何信息;如果一个模块在添加到购物车时,做了一些其它处理,或者在失败的时候也不想返回错误信息时,就可以用到这个键了。
现在,这个钩子仅用于当商品被添加到购物车时。到了Alpha 7版,可能会有些变动,但是,现在如果你的模块还需要检查购物车查看表单中的数量时,你可以使用hook_form_alter,为该表单添加一个验证函数。该表单的表单ID为uc_cart_view_form.
你在函数中,可以使用uc_cart_get_contents() 来得到客户购物车的当前情况。
例如:
<?php
function simple_inventory_add_to_cart($nid, $qty, $data) {
if ($qty > 1) {
$result[] = array(
'success' => FALSE,
'message' => t('Sorry, you can only add one of those at a time.'),
);
}
return $result;
}
?>