函数hook_cart_item()位于uc_cart.module模块中:
<?php
hook_cart_item($op, &$item)
?>
描述:
产品在添加到购物车以后,在交易完成以前,被称为项目(items)。比如在一家杂货店里面的货架上面,有一批产品,但是在旁边的说明中写道“最多15项”。在产品的状态转变的多个时期,比如添加到购物车时,保存时,加载时,以及结算时,hook_cart_item()都可对产品项进行处理。
下面是使用这个钩子的理由:在一个正在运营的站点中,产品价格可能会由于属性的调整或者其它原因,进行变动。如果一个用户已经向购物车中添加了一项,而该项的价格如果调整了的话,那么当他们进行结帐时,或者查看购物车时,我们就想为其显示最新的价格和产品型号。也就是说,重要的产品信息保存在购物车中,但是在加载购物车中的项目时,其它模块可根据最新的设置对其进行调整。
参数:
· $op -当前的动作。可能的值有:
o load -当在函数uc_cart_get_contents()中加载购物车时传递的每一项。其它模块可在此时,对购物车中的项目信息进行调整。没有返回值。
o can_ship -如果购物车中,所有的项目都不需要运送的话,浏览购物车时,就传递这个。如果购物车中的产品都不需要运送的话,那么Übercart将会把有关配送方面的信息去掉。当产品可运送时,hook_cart_item检查这个操作时,就会放回TRUE,否则返回FALSE
· $item - 购物车中项目的对象。
返回值:
对于load没有返回值。
对于can_ship可返回TRUE 或者FALSE。
例如:
<?php
function uc_manufacturer_cart_item($op, &$item) {
switch ($op) {
case 'load':
$term = array_shift(taxonomy_node_get_terms_by_vocabulary($item->nid, variable_get('uc_manufacturer_vid', 0)));
$arg1->manufacturer = $term->name;
break;
}
}
?>