Sha*_*351 19 php caching magento
我的布局中有一个侧边栏,显示在不同的页面上.
在这个块中,我有一个产品列表,我想在产品页面上选择当前产品.
我正在使用 :
$current_product = Mage::registry('current_product');
Run Code Online (Sandbox Code Playgroud)
获取当前产品,但这仅适用于我第一次加载产品页面.当我选择不同的产品时,上面的代码返回相同的值(第一个产品).
我假设发生这种情况是因为我正在使用Magento缓存.我能做些什么来获得正确的价值?
当我使用时会发生同样的事情:
$currentCategory = Mage::registry('current_category');
Run Code Online (Sandbox Code Playgroud)
侧边栏块是我在这里添加的导航模板:..\app\design\frontend\default\mytheme\template\catalog \navigation\page_left.phtml.
我用这个XML将它添加到布局中:
<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"/>
Run Code Online (Sandbox Code Playgroud)
drs*_*iya 23
如何获得当前的产品ID
尝试下面的代码来获取当前加载的产品ID:
$product_id = $this->getProduct()->getId();
Run Code Online (Sandbox Code Playgroud)
如果您无法访问$ this,则可以使用Magento注册表:
$product_id = Mage::registry('current_product')->getId();
Run Code Online (Sandbox Code Playgroud)
如果你不愿意使用自己继承的块类Mage_Catalog_Block_Navigation
,你可以在其中设置自己的缓存信息(例如,根据当前产品制作),你可以通过使用它来删除块的缓存它的布局定义:
<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml">
<action method="unsetData"><key>cache_lifetime</key></action>
</block>
Run Code Online (Sandbox Code Playgroud)