Magento - 获取当前产品

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)


blm*_*age 5

如果你不愿意使用自己继承的块类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)