洋红色 - 获取当前产品

2022-08-30 21:06:14

我的布局中有一个侧边栏块,它显示在不同的页面上。

在此块中,我有一个产品列表,我想在产品页面上选择当前产品。

我正在使用 :

$current_product = Mage::registry('current_product');

以获取当前产品,但这仅适用于我第一次加载产品页面。当我选择其他产品时,上面的代码返回相同的值(第一个产品)。

我假设发生这种情况是因为我使用的是Magento缓存。我能做些什么来获得正确的价值?

当我使用时,同样的事情也会发生:

$currentCategory = Mage::registry('current_category');

侧边栏块是我在这里添加的导航模板:..\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"/>

答案 1

如何获取当前产品 ID

请尝试以下代码以获取当前加载的产品ID:

$product_id = $this->getProduct()->getId();

当您无权访问$this时,可以使用Magento注册表:

$product_id = Mage::registry('current_product')->getId();

答案 2

如果您不愿意使用自己的块类继承自 ,您可以在其中设置自己的缓存信息(例如,根据当前产品进行),则可以通过在布局定义中使用此来摆脱块的缓存: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>

推荐