我们正在创建一个自定义页面,我们在其中制作产品向导,最后一步,我们想要提取产品页面,真的是catalog/product_view
块。显然我们可以创建块并使用renderview
方法在页面中设置它,但我们遇到的问题是它只有那个块而不是它的子节点,并且因为view.phtml
引入了大量的getChildHtml
阻止无效。
我认为必须有一种方法将产品视图块及其所有子项放在自定义非产品页面中。无需创建每个子块及其子块,有没有办法以编程方式提取xml文件中的所有块,如catalog_product_view
中的catalog.xml
句柄,并将其放在另一个页面上?
我们尝试使用的页面是一个使用自定义模板的类别页面,我们在模板文件中执行了很多PHP来执行向导。
答案 0 :(得分:0)
你尝试过这样的事吗?
//save the product in the registry so the block knows which product to display
$product = Mage::getModel('catalog/product')->load($productId);
Mage::register('product', $product);
//get the block from the layout and render it to html
$Block = Mage::getSingleton('core/layout');
$product_view = $Block->createBlock('catalog/product_view');
$product_view->setTemplate('catalog/product/view.phtml');
$product_view->toHtml();
我使用此代码取得了部分成功(显示了产品视图块的一部分,然后出现错误)。希望它会指出你正确的方向。