Magento在运行时更改产品模板

Magento在运行时更改产品模板,magento,magento-1.9,Magento,Magento 1.9,是否有一种方法可以根据某些产品属性在运行时更改产品模板?产品具有包含模板路径的自定义属性,不同的产品可能具有不同的模板 您可以通过多种不同的方式来实现 我认为最好的方法是替换产品视图块 1)创建一个新的块扩展图像目录图块产品视图 2)更新布局,以便页面使用该块或覆盖该块。 protected function _prepareLayout() { $this->setTemplate('product/view/special.phptml'); parent::_prep

是否有一种方法可以根据某些产品属性在运行时更改产品模板?产品具有包含模板路径的自定义属性,不同的产品可能具有不同的模板

您可以通过多种不同的方式来实现

我认为最好的方法是替换产品视图块

1)创建一个新的块扩展图像目录图块产品视图

2)更新布局,以便页面使用该块或覆盖该块。

protected function _prepareLayout()
{
    $this->setTemplate('product/view/special.phptml');
    parent::_prepareLayout();
}
  • 如果需要保留默认块,可以使用重写,而不必重新添加所有默认块
  • 如果仍要删除许多默认块,则可以使用布局对其进行更改:

            <remove name="product.info"/>
            <block type="ricard_catalog/product_view" name="ricard.product.info" as="product.info"/> <!-- I haven't set a template as the block have the logic to do so -->
    
    当然,您也可以在控制器中执行此操作,但这需要您执行一些复制/粘贴操作,这对于维护来说并不理想