利用可能なすべての製品、価格、その他の属性のテキストリストを出力するためのスクリプト(モジュールではなくMagentoの外部)を開発しています。しかし、カタログ価格ルールは製品価格に適用されていないようです。次のいずれかを使用した場合:Magento:カタログルールが適用された製品の価格を取得する方法
通常の価格(ルールは適用されません)を取得します。
私が使用している場合:
$_product->getSpecialPrice()
製品が実際に(特別価格はカタログのルールと関連していない場合、すなわち)製品自体に挿入された特別価格を持っていない限り、私はヌルを取得します。
ファビアンBlechschmidtによって与えられた答えで提案されているように、私も
Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice())
を試してみましたが、興味深いことに、それはそうでない場合はヌルを返して、製品がどのカタログルールの影響を受けている場合にのみ、通常の価格を返します。
少し前にStackOverflowとMagento Forumsに似たような質問がありましたが、答えが返ってきました(戻り値は同じです)。
Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND,Mage_Core_Model_App_Area::PART_EVENTS);
これを達成する方法のアイデアはありますか?
私はMagento 1.6.2.0を使用しています。 ありがとうございます。あなたに
おそらく、あなたのデータや索引付けに関係することがあります。すべてのカスタムモジュールが無効になっている既定のテーマで期待どおりの割引価格が表示されますか? – benmarks
はい、割引価格はフロントエンドでOkを表示します。問題はこれがMagentoモジュールではなく、「外部」スクリプトであることでした。 Magentoは、すべてが正しく動作するために必要な追加のものをロードするようです。言い換えれば、Magentoのすべてが本当にモジュールでなければなりません... – faken
* "Magentoのすべてが本当にモジュールでなければなりません" * - 実際はありません。しかし、アプリが実行されているときには、多くの方法でやりとりする多くのモジュールがあります。 'Mage_CatalogRule_Model_Observer'がインスタンス化していることを確認します。リモートスクリプト( 'Mage :: app()'インスタンシエーション、 'loadAreaPart()'呼び出し、製品ロードなど)の関連部分を貼り付ける必要があります。 – benmarks