Magento在运行时更改产品模板

时间:2017-01-12 12:31:16

标签: magento magento-1.9

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

1 个答案:

答案 0 :(得分:0)

您可以通过多种不同方式完成此操作。

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

1)创建一个新的块扩展Mage_Catalog_Block_Product_View

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

  • 如果您需要保留默认块,则可以使用重写而不必添加所有默认块
  • 如果你要删除许多默认的块,那么你可以使用布局来改变它:

            <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 -->
    

3)在块中覆盖_prepareLayout函数,为你添加setTemplate逻辑:

protected function _prepareLayout()
{
    $this->setTemplate('product/view/special.phptml');
    parent::_prepareLayout();
}

您当然也可以在控制器中执行此操作,但这需要您执行一些不适合维护的复制/粘贴。