繁体   English   中英

Magento获取当前产品

[英]Magento get current product

我有一个magento 1.7.0.2,带有清漆缓存。 我正在尝试创建一个未缓存的块并在产品视图页面上获取当前产品ID,但是Mage::registry('current_product')->getId(); ,也不是$this->getProduct()->getId(); 似乎正在工作。 我的自定义块在catalog.xml中如下所示:

        <catalog_product_view translate="label">
        ...
          <reference name="content">
          ...
            <block type="catalog/product_view" name="product.info.frz" template="catalog/product/view/frz.phtml">
                <action method="setEsiOptions">
                    <params>
                        <method>ajax</method>
                        <access>private</access>
                    </params>
                </action>
            </block>
          ...
          </reference>
        ...
        </catalog_product_view>

而且我正在用<?php echo $this->getChildHtml('product.info.frz'); ?>在product / view.phtml中显示该块<?php echo $this->getChildHtml('product.info.frz'); ?> <?php echo $this->getChildHtml('product.info.frz'); ?>一切工作正常,该块不会被缓存。 但是,当我尝试获取当前产品ID时,我得到PHP message: PHP Fatal error: Call to a member function getId() on a non-object

据我所知, Mage::registry('current_product')->getId(); 应该适用于目录/导航块。 您能按正确的方向给我打电话吗? 我究竟做错了什么 ?

谢谢。

似乎我必须为ESI策略添加注册表才能访问getId()方法:

                    <registry_keys>
                        <current_product/>
                    </registry_keys>

另外,就我而言,ESI政策似乎并未在“目录/导航”上奏效,因此必须使用“核心/模板”对其进行更改

希望这对任何人有帮助。

您必须在自定义的contoller和action中的renderLayour()中,将当前产品添加到注册表;

public function viewAction()
 {
   $this->loadLayout();
   $id = $this->getRequest()->getParam('id');
   $current_product=Mage::getModel('catalog/product')->load($id);
   //Some code here
   Mage::register('current_product',$current_product);
   $this->renderLayout();
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM