0

Magento 1.7 のインストールに関する製品ページがあり、段階的な価格設定の製品があります。これは、13% の値が 100% で上書きされる (これは正しくありません) までの一瞬のことです。これを引き起こしているバグのある JavaScript がページにあるとしか考えられませんが、それを見つける方法がわかりません。このバグを見つけて修正する方法について誰かアドバイスをください。

ここにページがあります: http://makethemostof.co.uk/lace-print-cushions

4

4 に答える 4

7

Chrome インスペクタで HTML 要素を確認しました: class="benefit".

[リソース] タブで「.benefit」を検索し、loupe.js ファイルで 1 件一致しました。

[スクリプト] タブの loupe.js ファイルに移動し、コードを整形して、「.benefit」を検索します。

       $$('.benefit').each(function(el) {
            var parsePrice = function(html) {
                return parseFloat(/\d+\.?\d*/.exec(html));
            };
            var container = $(this.containers[3]) ? this.containers[3] : this.containers[0];
            var price = parsePrice($(container).innerHTML);
            var tierPrice = $$('.price.tier-' + i);
            tierPrice = tierPrice.length ? parseInt(tierPrice[0].innerHTML, 10) : 0;
            var $percent = Selector.findChildElements(el, ['.percent.tier-' + i]);
            $percent.each(function(el) {
                el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));
            });
        }, this);

Chrome Inspector のおかげで、スクリプトは 1 分もかからずに見つかりました。

さて、ここに犯人がいます:

el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));

簡単な算数です。何が何なのかはわかりませんtierPriceが、あなたのビジネスにとって正しい計算を見つけられると確信しています (Math.ceilは数値を切り上げます)。

于 2012-05-04T21:08:20.317 に答える
2

実はそれは

for (var i > 0; i < this.tierPrices.length; i++) {

それを 1 に置き換えると、最初の層の価格の正しい割引率が計算され、それ以降の他の層の価格は 100% に設定されます。

彼はすべてのティア価格について計算する必要があるため、iが 0 より大きい場合は正しいティア % を計算する必要があります。それ以外の場合は、製品価格と同じ価格、または 0 または 100%

それが役に立てば幸い

于 2012-10-15T11:59:23.597 に答える
0

Magento 1.7 のバグに特に関心がある場合は、階層の価格の節約が常に 100% と表示されるため、これが修正されます。

js/varien/product.js の 748 行目で次のように変更します。

for (var i = 0; i < this.tierPrices.length; i++) {

for (var i > 1; i < this.tierPrices.length; i++) {
于 2012-05-07T19:29:02.543 に答える
0

これは問題の原因を突き止めようとする素晴らしい投稿ですが、このページの解決策はコードの実行を妨げるだけで、実際には問題を解決していないことがわかりました。この問題の解決策をここに投稿しました:

https://stackoverflow.com/a/16022796/159341

于 2013-04-15T19:09:45.793 に答える