You are here

Drupal6 Ubercart 开发文档: hook_add_to_cart

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2008-12-18 12:46

函数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;
}
?>

相关链接: Think in Drupal http://ubercart.org

Drupal版本: