Put the following code into /includes/extra_cart_actions/one_per_cart.php; you'll need to edit the ONE_PER_CART_PRODUCT_IDS value to reflect the product_ids of your restricted items:
Code:
<?php
/**
* Extra shopping Cart actions supported.
*
* The main cart actions supported by the current shoppingCart class.
*
* NOTE: Many of the defines used in this module have been included by
* class.init_quote.php's inclusion of /includes/quotes_status_array.php.
*
*/
define('ONE_PER_CART_PRODUCT_IDS', '14,4,6,11,15'); /*Identify the product_ids of the products that must be ordered separately*/
define('ERROR_ONE_PER_CART', 'Sorry, but you can\'t add "%s" to an order that already contains another item.');
define('ERROR_ONE_PER_CART_COMBINE', 'Sorry, but you can\'t add another item to an order that already contains "%s".');
switch ($_GET['action']) {
case 'add_product':
$onePerCartIDs = explode (',', ONE_PER_CART_PRODUCT_IDS);
$inCartName = '';
foreach ($onePerCartIDs as $theID) {
if ($theID == $_POST['products_id']) {
if ($_SESSION['cart']->count_contents() > 0) {
$error = true;
$messageStack->add('product_info', sprintf(ERROR_ONE_PER_CART, zen_get_products_name((int)$_POST['products_id'])));
}
} elseif ($_SESSION['cart']->in_cart_mixed($theID) != 0) {
$inCartName = zen_get_products_name($theID);
}
}
if (!$error && $inCartName != '') {
$error = true;
$messageStack->add('product_info', sprintf(ERROR_ONE_PER_CART_COMBINE, $inCartName));
}
}
if ($error) {
unset($_GET['action']);
}
break;
}