That Software Guy! eCommerce Starts Here!

Probing the Cart on the Zen Cart Product Info page

Donate: This is free software. Show your appreciation by supporting my efforts. Donate

Relevance: Zen Cart™ 1.3.0 - 1.3.9, 1.5.x

It is possible to check the current contents of the customer's cart when generating the product info page. This allows you to do things like hiding or showing options, issuing customized messages, etc.

We'll illustrate this by showing how to hide the "add to cart" button for product 27 when product 60 is not in the cart. We will also make the page hardcode an obnoxious blinking message - something you should not really do - just to demonstrate the approach. (You will want a nicely formatted message in a language file using CSS styling, etc.)

Create your custom template if you haven't already done so.

Customize the product_info page. Assuming your template is called "custom," copy
includes/templates/template_default/templates/tpl_product_info_display.php
to
includes/templates/custom/templates
and change
<!--bof Add to Cart Box -->
<?php
if (CUSTOMERS_APPROVAL == 3 and TEXT_LOGIN_FOR_PRICE_BUTTON_REPLACE_SHOWROOM == '') {
  // do nothing
} else {
to
<!--bof Add to Cart Box -->
<?php
$show_add_button = 1; 
if ((int)$_GET['products_id'] == 27) {
   $show_add_button = 0; 
   $check_prod_list = $_SESSION['cart']->get_products();
   for ($i=0, $n=sizeof($check_prod_list); $i<$n; $i++) {
       if (zen_get_prid($check_prod_list[$i]['id']) == 60) {
           $show_add_button = 1; 
       }
   }
}

if (CUSTOMERS_APPROVAL == 3 and TEXT_LOGIN_FOR_PRICE_BUTTON_REPLACE_SHOWROOM == '') {
  // do nothing
} else if ($show_add_button == 0) {
  // Warn the user
  echo "<div align='right'><blink>Please put item 60 in your cart!</blink></div>"; 
} else {


This tip was first submitted to the Zen Cart Support Forum in this thread on September 29, 2006.

For a more global look at cart validation, take a look at Valid Cart.