![]() |
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:
- Open the best_sellers.php file located in the /includes/modules/sideboxes/ directory.
- 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;
- 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;
- 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;
- 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;
- 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.
|
|||||||




