2011-01-20 6 views
4

私は特定の場所で代替品template/catalog/product/price.phmlを使用する方法を探しています。既存のprice.phtmlファイルをすべて使用し続けます他の場所。Magento - 別の "price.phtml"(既存のものに加えて)を使用

さらに説明すると、通常の価格とその直下に別の特別価格を表示する必要がありますが、商品ページ(表示されている主な製品)のみです。この特別価格は、カタログ価格ルールで計算できる価格ではないため、私は自分のモジュールを書いて計算します。だから、私はいつも私が通常のol 'template/catalog/product/price.phtmlファイルで表示したい価格を表示しています...しかし、製品ページ(主な製品 - 関連、アップセルなどではありません)私は自分のカスタムtemplate/catalog/product/price-custom.phtmlテンプレートファイルを使用したい。誰でも助けることができますか?

通常、私はレイアウトXMLファイル(たとえばcatalog.xml)を見て、これらのタイプのものを探しますが、price.phtmlはちょっと特殊です - それほど単純ではありません。私の人生では、閲覧中のページで条件付きで簡単に交換する方法があるかどうかはわかりません。私はちょうどprice.phtmlを更新していつもこの余分な価格をプリントアウトして、どこでも価格を隠すためにCSSを使うことができると知っていますが、できるだけそれをしないでください。

<layout> 
    <PRODUCT_TYPE_simple> 
     <reference name="product.clone_prices"> 
      <action method="setTemplate"> 
       <template>catalog/product/price-custom.phtml</template> 
      </action> 
     </reference> 
    </PRODUCT_TYPE_simple> 
</layout> 

答えて

1

またはあなたのPHPブロックで:

(。また、あなたは私だけの単純な製品を持っていることを知りたい場合があります)

+0

私はあなたの提案を取って、clockworkgeekの提案と少し組み合わせた。ここでは、私が行ったことの概要を示します:私はMage_Catalog_Block_Product_Abstractを拡張したクラスを作成し、$ _priceBlockDefaultTemplate変数を自分自身のテンプレートファイルへのパスでオーバーライドしました。次に、local.xmlレイアウトファイルで、 shaune

+0

の場合、http://www.magentocommerceの説明に従って、info.simple.two.prices "as =" product_type_data "template ="カタログ/製品/ビュー/タイプ/ simple.phtml "/> com/boards/viewthread/18494/ magento abstactクラスメソッドは、configリライトを使用してオーバーライドできません。 – anshuman

5

これは、レイアウトXMLファイルで行うことができます。

ここでは例を参照してください。

Mage_Catalog_Block_Product_Abstract

protected $_priceBlockDefaultTemplate = 'catalog/product/price.phtml'; 
protected $_tierPriceDefaultTemplate = 'catalog/product/view/tierprices.phtml'; 
+0

あなたの提案は、私を正しい道筋に置くのに役立ちました。私はこの 助けてくれてありがとう。 – shaune

+0

が削除されました。 "で、これはcharmのように機能します!ありがとう – anshuman

5

追加、local.xmlファイルでapp/frontend/default/YOURTEMPLATE/layout

に入れて、local.xmlファイルを作成します。

<?xml version="1.0" encoding="UTF-8"?> 
<layout> 
    <!-- Override price template on product view page -->    
    <PRODUCT_TYPE_simple> 
     <reference name="product.info.simple"> 
      <action method="setTemplate"> 
       <template>catalog/product/price_product_page.phtml</template> 
      </action> 
     </reference> 
    </PRODUCT_TYPE_simple> 
    <!-- /Override price template on product view page -->    
</layout> 

は、コピーを作成します。 catalog/product/price.phtmlとこのテンプレートにprice.phtmlを上書きしますYOURTEMPLATE/templates/product/product_price_page.phtml

に入れ、それを達成するためにproduct_price_page.phtml

+0

@ Samuel Liew and Ryan Lucierすべての製品タイプについて同様のプロセスを普遍的に提案できますか?私は、すべての製品タイプに代替price.phtmlファイルを使用したいと考えています。 – harishannam

+1

@harishannamさんが新しい質問を作成し、この質問にリンクしています。 –

+0

@SamuelLiewこの質問にリンクする方法。前回私は質問を投稿しましたが、以前に尋ねられたことがあり、2ヶ月間延期されました。 – harishannam

0

適切な方法でそれを置き換える:

<PRODUCT_TYPE_simple> 
    <reference name="product.info.simple"> 
     <action method="addPriceBlockType"><type>simple</type><block>catalog/product_price</block><template>catalog/product/price-product-page.phtml</template></action> 
    </reference> 
</PRODUCT_TYPE_simple> 

<PRODUCT_TYPE_configurable> 
    <reference name="product.info.configurable"> 
     <action method="addPriceBlockType"><type>configurable</type><block>catalog/product_price</block><template>catalog/product/price-product-page.phtml</template></action> 
    </reference> 
</PRODUCT_TYPE_configurable> 

...

1

最近、同様の要件がありました。ここでは、製品ページの異なる価格テンプレートが推奨されるソリューションでした。

<block type="catalog/product_price_template" name="catalog_product_price_template" /> 

価格ブロックは、それが<default/>ハンドル内のcatalog.xml単にブロックタイプと名前で定義されています(少なくともRWDのテーマで)Magentoの中に特殊なケースのようなものであるように思われます

いくつかのコアレイアウトファイルが価格テンプレートをどのように設定するかを見てみると、このような例がバンドルから見つかります。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> 

彼らはあなたがこのことに基づいてMage_Catalog_Block_Product_Abstract

を見つけることができますaddPriceBlockTypeというメソッドを呼び出し、少し実験の後、私は次のソリューションは、私のために働いた:

<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> 
関連する問題