Further to the code I implemented above, I have managed to work in the same rule to show the lowest price available for any products with quantity discounts on product listing pages and modules.
The following code will alter product prices on listing pages to show "As low as: $xx.xx" (lowest price available through quantity discounts). Please note I also added the following line to ../includes/languages/YOUR_TEMPLATE/english.php:
PHP Code:
define('TEXT_QTY_PRICE','As low as: ');
Files to edit:
../includes/modules/YOUR_TEMPLATE/product_listing.php
../includes/templates/YOUR_TEMPLATE/templates/tpl_modules_products_all_listing.php
../includes/templates/YOUR_TEMPLATE/templates/tpl_modules_products_featured_listing.php
../includes/templates/YOUR_TEMPLATE/templates/tpl_modules_products_new_listing.php
../includes/modules/pages/specials/main_template_vars.php
../includes/modules/YOUR_TEMPLATE/featured_products.php
../includes/modules/YOUR_TEMPLATE/new_products.php
../includes/modules/YOUR_TEMPLATE/specials_index.php
../includes/modules/YOUR_TEMPLATE/upcoming_products.php
product_listing.php:
Find:
PHP Code:
case 'PRODUCT_LIST_PRICE':
$lc_price = zen_get_products_display_price($listing->fields['products_id']) . '<br />';
$lc_align = 'right';
$lc_text = $lc_price;
Replace with:
PHP Code:
case 'PRODUCT_LIST_PRICE':
$qty_discount = zen_get_products_discount_price_qty((int)$listing->fields['products_id'],999999);
$actual_price = zen_get_products_actual_price((int)$listing->fields['products_id']);
$base_price = zen_get_products_base_price((int)$listing->fields['products_id']);
$products_tax_class_id = zen_products_lookup((int)$listing->fields['products_id'], 'products_tax_class_id');
// regular price
if ($qty_discount < $actual_price and $base_price == $actual_price) {
$lc_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span>' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
// has special/sale
} elseif ($qty_discount < $actual_price and $base_price != $actual_price) {
$lc_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span><span class="normalprice">' . $currencies->display_price($base_price, zen_get_tax_rate($products_tax_class_id)) . '</span> ' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
} else {
// base price
$lc_price = zen_get_products_display_price($listing->fields['products_id']);
}
$lc_align = 'right';
$lc_text = $lc_price;
tpl_modules_products_all_listing.php, tpl_modules_products_all_listing.php and tpl_modules_products_all_listing.php:
Find:
PHP Code:
if ((PRODUCT_ALL_LIST_PRICE != '0' and zen_get_products_allow_add_to_cart($products_all->fields['products_id']) == 'Y') and zen_check_show_prices() == true) {
$products_price = zen_get_products_display_price($products_all->fields['products_id']);
$display_products_price = TEXT_PRICE . ' ' . $products_price . str_repeat('<br clear="all" />', substr(PRODUCT_ALL_LIST_PRICE, 3, 1)) . (zen_get_show_product_switch($products_all->fields['products_id'], 'ALWAYS_FREE_SHIPPING_IMAGE_SWITCH') ? (zen_get_product_is_always_free_shipping($products_all->fields['products_id']) ? TEXT_PRODUCT_FREE_SHIPPING_ICON . '<br />' : '') : '');
} else {
$display_products_price = '';
}
Replace with:
PHP Code:
if ((PRODUCT_ALL_LIST_PRICE != '0' and zen_get_products_allow_add_to_cart($products_all->fields['products_id']) == 'Y') and zen_check_show_prices() == true) {
$qty_discount = zen_get_products_discount_price_qty((int)$products_all->fields['products_id'],999999);
$actual_price = zen_get_products_actual_price((int)$products_all->fields['products_id']);
$base_price = zen_get_products_base_price((int)$products_all->fields['products_id']);
$products_tax_class_id = zen_products_lookup((int)$products_all->fields['products_id'], 'products_tax_class_id');
// regular price
if ($qty_discount < $actual_price and $base_price == $actual_price) {
$products_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span>' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
// has special/sale
} elseif ($qty_discount < $actual_price and $base_price != $actual_price) {
$products_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span><span class="normalprice">' . $currencies->display_price($base_price, zen_get_tax_rate($products_tax_class_id)) . '</span> ' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
} else {
// base price
$products_price = zen_get_products_display_price($products_all->fields['products_id']);
}
$display_products_price = TEXT_PRICE . ' ' . $products_price . str_repeat('<br clear="all" />', substr(PRODUCT_ALL_LIST_PRICE, 3, 1)) . (zen_get_show_product_switch($products_all->fields['products_id'], 'ALWAYS_FREE_SHIPPING_IMAGE_SWITCH') ? (zen_get_product_is_always_free_shipping($products_all->fields['products_id']) ? TEXT_PRODUCT_FREE_SHIPPING_ICON . '<br />' : '') : '');
} else {
$display_products_price = '';
}
Ensure you replace PRODUCT_ALL_LIST_PRICE and all instances of $products_all with the appropriate string for the file you're editing (PRODUCT_FEATURED_LIST_PRICE, $featured_products and PRODUCT_NEW_LIST_PRICE, $products_new).
main_template_vars.php:
Find:
PHP Code:
$list_box_contents = array();
while (!$specials->EOF) {
$products_price = zen_get_products_display_price($specials->fields['products_id']);
Replace with:
PHP Code:
$list_box_contents = array();
while (!$specials->EOF) {
$qty_discount = zen_get_products_discount_price_qty((int)$specials->fields['products_id'],999999);
$actual_price = zen_get_products_actual_price((int)$specials->fields['products_id']);
$base_price = zen_get_products_base_price((int)$specials->fields['products_id']);
$products_tax_class_id = zen_products_lookup((int)$specials->fields['products_id'], 'products_tax_class_id');
// qty discount
if ($qty_discount < $actual_price) {
$products_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span><span class="normalprice">' . $currencies->display_price($base_price, zen_get_tax_rate($products_tax_class_id)) . '</span> ' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
} else {
// base price
$products_price = zen_get_products_display_price($specials->fields['products_id']);
}
featured_products.php, new_products.php, specials_index.php, upcoming_products.php
Find:
PHP Code:
while (!$featured_products->EOF) {
$products_price = zen_get_products_display_price($featured_products->fields['products_id']);
Replace with:
PHP Code:
while (!$featured_products->EOF) {
$qty_discount = zen_get_products_discount_price_qty((int)$featured_products->fields['products_id'],999999);
$actual_price = zen_get_products_actual_price((int)$featured_products->fields['products_id']);
$base_price = zen_get_products_base_price((int)$featured_products->fields['products_id']);
$products_tax_class_id = zen_products_lookup((int)$featured_products->fields['products_id'], 'products_tax_class_id');
// regular price
if ($qty_discount < $actual_price and $base_price == $actual_price) {
$products_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span>' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
// has special/sale
} elseif ($qty_discount < $actual_price and $base_price != $actual_price) {
$products_price = '<span class="product-name">' . TEXT_QTY_PRICE . '</span><span class="normalprice">' . $currencies->display_price($base_price, zen_get_tax_rate($products_tax_class_id)) . '</span> ' . $currencies->display_price($qty_discount, zen_get_tax_rate($products_tax_class_id));
} else {
// base price
$products_price = zen_get_products_display_price($featured_products->fields['products_id']);
}
Again, ensure you replace all instances of $featured_products with the appropriate string for the file you're editing ($new_products, $specials_index and $expected).
Bookmarks