I have a sidebar block in my layout that is being displayed on different pages.
In this block I have a list of products, and I want to select the current product when I’m on a product page.
I’m using :
$current_product = Mage::registry('current_product');
to get the current product, but this works only for the first time I’m loading the product page. When I select a different product the code above returns the same value (the first product).
I’m assuming this happens because I’m using Magento cache. What can I do to get the right value?
The same thing happens when I use:
$currentCategory = Mage::registry('current_category');
The sidebar block is a navigation template I’ve added here:
..\app\design\frontend\default\mytheme\template\catalog\navigation\page_left.phtml.
I’m adding it to the layout with this XML :
<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"/>
If you’re not willing to use your own block class inheriting from
Mage_Catalog_Block_Navigation, in which you could set your own cache informations (to make it eg depending on the current product), you can get rid of the cache for your block by using this in its layout definition :