1

1.6 から 1.7.0.1 にアップグレードした後、おそらく js の問題が原因で、バンドル製品がフロントエンドに表示されない

firebugでデバッグすると、次のjsエラーが見つかりました

<script type="text/javascript">
var optionsPrice = new Product.OptionsPrice(
Fatal error: Call to undefined method Mage_Bundle_Model_Product_Price::getBasePrice() in /var/www/vhosts/stage.planetjill.com/httpdocs/app/code/core/Mage/Bundle/Model/Product/Price.php on line 117
</script>

price.php のメソッド

 public function getFinalPrice($qty = null, $product)
    {
        if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) {
            return $product->getCalculatedFinalPrice();
        }
        $finalPrice = $this->getBasePrice($product, $qty);
        //$finalPrice = $product->getPrice();
        $product->setFinalPrice($finalPrice);
        Mage::dispatchEvent('catalog_product_get_final_price', array('product' => $product, 'qty' => $qty));
        $finalPrice = $product->getData('final_price');

        $finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice);
        $finalPrice += $this->getTotalBundleItemsPrice($product, $qty);

        $product->setFinalPrice($finalPrice);
        return max(0, $product->getData('final_price'));
    }

コメント行が表示された場合

// $finalPrice = $product->getPrice();

これはmagento 1.6で使用されました。代わりにこの行を使用すると

$finalPrice = $this->getBasePrice($product, $qty);

バンドル製品が表示されるようになりましたが、構成された価格は常に 0 に設定され、addtocart ボタンが機能しなくなります。

解決策はありますか?

4

2 に答える 2

2

product.js ファイルに js エラーがあるかどうかを確認してください

于 2012-12-26T20:04:42.773 に答える
1

テンプレート ファイルを確認します。おそらく /app/design/xxx/xxx/bundle/catalog/product/view/price.phtml -- $_product->getFinalPrice() の呼び出しが正しく接続されていることを確認してください (つまり、 get_class_methods($this) getFinalPrice() にアクセスできる適切なクラスです)

そうでない場合は、インストールされているモジュールを grep して、Mage_Bundle_Model_Product_Price が書き換えられているかどうかを確認する必要があります。

または、問題が修正されるまで、モジュールの .xml ファイルを使用してモジュールを 1 つずつ無効にします。そこから隔離します。

于 2012-10-01T04:54:39.330 に答える