Php Magento获取当前产品
我有一个magento 1.7.0.2,带有清漆缓存。我试图创建一个未缓存的块,并在产品视图页面上获取当前产品id,但是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
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>