2017-01-12 3 views
0

Есть ли способ изменить шаблон продукта во время выполнения в зависимости от некоторого атрибута продукта? Продукт имеет настраиваемый атрибут, который содержит путь к шаблону, а разные продукты могут иметь разные шаблоны.Magento изменить шаблон продукта во время выполнения

ответ

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) Override в блоке функции _prepareLayout добавить вам setTemplate логика:

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

Вы также можете сделать это и в контроллере, но это потребует от вас нескольких копий/паст, которые не были бы идеальны для обслуживания.