Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento获取当前产品_Php_Magento - Fatal编程技术网

Php Magento获取当前产品

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

我有一个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>

...
...
AJAX
私有的
...
...
我正在product/view.phtml中用
一切正常,块不会被缓存。但是,当我试图获取当前产品id时,会得到
PHP消息:PHP致命错误:对非对象调用成员函数getId()

据我所知,
Mage::registry('current_product')->getId()应适用于目录/导航块。你能给我指出正确的方向吗?我做错了什么


谢谢。

您必须在自定义控件和操作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();
 }

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


此外,在我的案例中,ESI策略似乎不适用于“目录/导航”,必须使用“核心/模板”进行更改


希望这对任何人都有帮助。

将block type=“catalog/navigation”更改为“catalog/product\u view”我更新了布局结构,不幸的是,我不知道如何创建自定义控制器。这是正确的答案。非常感谢。所有这些都归
                    <registry_keys>
                        <current_product/>
                    </registry_keys>