How do I exclude Free Products from the Bestsellers Sidebox in Zen Cart?


Zen Cart Bestsellers Sidebox - Remove Gift Certificates Free Products are treated just like any other product when it comes to the Bestsellers Sidebox in Zen Cart.  This sidebox displays the top selling items according to the orders listed in your database.So, what can you do if you would like to remove free products from being displayed as a best seller?

Firstly, make sure that the products are in fact marked as Free Products in Zen Cart.  Go to Zen Cart Admin > Catalog > Categories/Products and select the product.  Check that the Product is Free is set to Yes.

It is then easy to modify the bestsellers query to exclude free products when generating the best selling products for the sidebox.

To exclude Free Products from the Bestsellers Sidebox in Zen Cart:

  1. Open the best_sellers.php file located in the /includes/modules/sideboxes/ directory.
  2. Find this section of code (around line 34):
    $best_sellers_query = "select distinct p.products_id, pd.products_name, p.products_ordered
     from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, "
     . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c
     where p.products_status = '1'
     and p.products_ordered > 0
     and p.products_id = pd.products_id
     and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
     and p.products_id = p2c.products_id
     and p2c.categories_id = c.categories_id
     and '" . (int)$current_category_id . "' in (c.categories_id, c.parent_id)
     order by p.products_ordered desc, pd.products_name
     limit " . MAX_DISPLAY_BESTSELLERS;
  3. and modify to include the Master Category ID you wish to exclude:
    $best_sellers_query = "select distinct p.products_id, pd.products_name, p.products_ordered
     from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, "
     . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c
     where p.products_status = '1'
     and p.products_ordered > 0
     and p.products_id = pd.products_id
     and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
     and p.products_id = p2c.products_id
     and p2c.categories_id = c.categories_id
     and '" . (int)$current_category_id . "' in (c.categories_id, c.parent_id)
     and p.product_is_free !=1
     order by p.products_ordered desc, pd.products_name
     limit " . MAX_DISPLAY_BESTSELLERS;
  4. Also, find this section of code (around line 51):
    $best_sellers_query = "select distinct p.products_id, pd.products_name, p.products_ordered
     from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
     where p.products_status = '1'
     and p.products_ordered > 0
     and p.products_id = pd.products_id
     and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
     order by p.products_ordered desc, pd.products_name
     limit " . MAX_DISPLAY_BESTSELLERS;
  5. And modify to include the Master Category ID you wish to exclude:
    $best_sellers_query = "select distinct p.products_id, pd.products_name, p.products_ordered
     from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd
     where p.products_status = '1'
     and p.products_ordered > 0
     and p.products_id = pd.products_id
     and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'
     and p.product_is_free !=1
     order by p.products_ordered desc, pd.products_name
     limit " . MAX_DISPLAY_BESTSELLERS;


  6. Save the modified best_sellers.php file to your override folder.  This will be /includes/modules/sideboxes/CUSTOM/ where CUSTOM represents the name of your current template folder.
     
   
     

More Zen Cart:

  1. How do I remove Gift Certificates from the Bestsellers Sidebox in Zen Cart?
  2. Set a sort order for the Featured Products Centerbox on Zen Cart Home Page
  3. Bestsellers – Zen Cart Sidebox
  4. Change the number of products displayed in the Featured Products centerbox in Zen Cart
  5. Change name of Bestsellers sidebox Heading in Zen Cart
  1. No comments yet.
(will not be published)

Notify me of followup comments via e-mail. You can also subscribe without commenting.