1

独自のMagentoモジュールを作成せずに、静的CMSブロックに特定の製品の価格を含める方法はありますか?

私は試した:

{{block type="catalog/product_view" product_id="1234" template="catalog/product/price.phtml"}}

これは、Mage_Catalog_Block_Product_Viewがproduct_id属性から製品をロードするという事実を使用しています。ただし、これはproductレジストリに何も存在しない場合にのみ機能します。そのため、商品詳細ページでは、詳細ページの商品が使用されます。

私も見てみましたMage_Catalog_Block_Product::getProduct。これは商品IDから読み込むことができますが、productフィールドでラップされている場合に限ります。

何かのようなもの

{{block type="catalog/product" product.product_id="1234" template="catalog/product/price.phtml"}}

プロパティを設定するため、は機能していproduct.product_idません。のようにネストされたものではありませんproduct->product_id

他のオプションは、productIdパラメーターから製品をロードする独自のテンプレートファイルを追加することですが、それはクリーンではないと思います。

クールなアイデアはありますか?

4

2 に答える 2

2

私は以前にあなたが提案した方法で価格をロードしようとはしませんでしたが、私が見ることができる当面の問題は、price.phtmlファイルが単なるIDではなく製品オブジェクトを期待していることです。

代わりに、レイアウトからIDを受け取り、目的のHTMLを返すカスタム.phtmlファイルを作成します。その後、レジストリによってロードされる製品やその他の製品に関係なく、これを好きな場所で使用できます。

.phtmlファイルの主要なメソッドは次のとおりです。 $id = $this->getProductId();レイアウトからIDをロードしてから$product = Mage::getModel('catalog/product')->load($id);、製品オブジェクトを取得します。

ロードされた製品ができたので、必要な属性とフォーマットを出力できます。たとえば$product->getFinalPrice()、製品の最終的な販売価格がわかります。

カスタムブロックを含めるには、XMLコードをに変更します{{block type="core/template" template="path/to/your/file.phtml" name="someReferenceName" product_id="1234"}}

XMLでの同等のものは次のとおりです。 <block type="core/template" template="path/to/your/file.phtml" name="someReferenceName"><action method="setProductId"><product_id>1234</product_id></action></block>

注:ブロックに渡される引数(つまりproduct_id)はすべてこの参照名に対して格納されるため、ブロックの名前を設定することが重要です。少なくともXMLに相当するもので参照名を指定しなかった場合、ブロックは渡されたIDを受け取りません。同じことがsmartyスタイルの構文に当てはまるかどうかはテストしていませんが、当てはまると思います。

お役に立てば幸いです。

于 2012-05-08T11:54:43.973 に答える
0

IcebergCommerceには、単一製品の埋め込みウィジェットと呼ばれる拡張機能があります。これには必要な機能があり、製品の価格のみを表示するように構成できるようです:http: //icebergcommerce.com/software/magento-product-embed-widget.html

于 2012-05-09T06:59:39.347 に答える