Index: uc_node_checkout.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/uc_node_checkout/uc_node_checkout.module,v retrieving revision 1.8.2.12 diff -u -p -r1.8.2.12 uc_node_checkout.module --- uc_node_checkout.module 26 Oct 2010 18:48:58 -0000 1.8.2.12 +++ uc_node_checkout.module 1 Feb 2011 16:58:14 -0000 @@ -675,6 +675,28 @@ function uc_node_checkout_cart_item($op, $item->checkout_node = $node; } break; + case 'can_ship': + // Determine if there is a shippable component to this node checkout product + // We will look at the default $item settings to determine. + if ($uc_node_checkout_product = node_load($item->data['nid'])) { + // If the item was set to be 'shippable' on the node edit form of the uc_node_checkout product, + // not the associated node to purchase, then we'll send this off to ubercart as a 'shippable' item + // and Ubercart will use this is a trigger to display the shipping pane. Else, if set to unshippable + // Ubercart will not trigger the shipping pane, provided there are no other shippable products + // in the cart with the uc_node_checkout items. + if ($uc_node_checkout_product->shippable == 0) { + // If this, then the product was set to 'not shippable' + return FALSE; + } + else { + return TRUE; + } + } + else { + // $item->data['nid'] was not found or I was unable to node_load $item->data['nid']'s nid. So show an error: + drupal_set_message(t('Unable to determine the product class associated with item ' . $item->data['title'] . ' so the shipping pane is included on this Ubercart display'), 'error'); + } + break; } }