Недавно у меня было похожее требование, когда предпочтительным решением было другое ценовое предложение для страницы продукта.
Ценовой блок, кажется, является чем-то особенным в Magento (по крайней мере, в теме RWD), он определен в catalog.xml как просто тип блока и имя в дескрипторе <default/>
:
<block type="catalog/product_price_template" name="catalog_product_price_template" />
Если вы посмотрите, как некоторые основные файлы макета устанавливают шаблон цены, вы найдете примеры, подобные этому (из bundle.xml):
<reference name="catalog_product_price_template">
<action method="addPriceBlockType">
<type>bundle</type>
<block>bundle/catalog_product_price</block>
<template>bundle/catalog/product/price.phtml</template>
</action>
</reference>
Они вызывают метод с именем addPriceBlockType
, который вы можете найти в Mage_Catalog_Block_Product_Abstract
Основываясь на этом и после небольшого эксперимента, я обнаружил, что мне подходит следующее решение:
<catalog_product_view>
<reference name="product.info">
<action method="addPriceBlockType">
<type>simple</type>
<block>catalog/product_price</block>
<template>catalog/product/price_product_page.phtml</template>
</action>
<action method="addPriceBlockType">
<type>configurable</type>
<block>catalog/product_price</block>
<template>catalog/product/price_product_page.phtml</template>
</action>
<!-- Set for each product type as necessary e.g. bundled, virtual etc... -->
</reference>
</catalog_product_view>