This could be the problem:
<img src="../images/sale-icon.png" width="101" height="58" class="onsaleicon" />
When you are not on homepage the relative path to the image is wrong.
Use this instead:
<img src="<?php echo $this->getSkinUrl('images/sale-icon.png')?>" width="101" height="58" class="onsaleicon" />
and place your image in skin/frontend/{interface}/{theme}/images/
.
Small tip:
Don't use this:
$specialprice = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialPrice();
// Get the Special Price FROM date
$specialPriceFromDate = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialFromDate();
// Get the Special Price TO date
$specialPriceToDate = Mage::getModel('catalog/product')->load($_product->getId())->getSpecialToDate();
You are loading the product 3 times and you don't need to do that. You can load it only once if neccesary:
$mainProduct = Mage::getModel('catalog/product')->load($_product->getId());
$specialprice = $mainProduct->getSpecialPrice();
// Get the Special Price FROM date
$specialPriceFromDate = $mainProduct->getSpecialFromDate();
// Get the Special Price TO date
$specialPriceToDate = $mainProduct->getSpecialToDate();
but you can go without loading it, by editing the attributes 'special_price', 'special_from_date' and
special_to_date` and setting
used in product listingto
yes`.
bigger tip:
You can check if the product has a discount without checking the special price and the dates. This works even if you have a discount from a catalog rule:
if ($_product->getPrice() > $_product->getFinalPrice())
The three websites where it works probably have a bigger problem than the one where it doesn't: they do not have the recent security patch SUPEE-6788 applied.
One thing that the patch changed was that blocks to be used in CMS directives like that have to be added to a whitelist. You find this whitelist in System > Permissions > Blocks.
More details in this question:
APPSEC-1057 How to add variables or blocks to the white list tables
Best Answer
Block shortcode should have an option to specify products count. Usually it is product_count
Try to update code to
Please note that chosen category should contain enough products.