2013-04-26 4 views
0

Я изменил некоторые функции в пурпуре, чтобы разделить десятичные числа в цене. Решение, похоже, работает с простыми продуктами без опций, но продукты с опциями по-прежнему отображают .00, когда выбрана опция. По иронии судьбы выпадающий для опции показывает дополнительную стоимость опции без децибел, но основная цена с выбранной опцией по-прежнему показывает децибелы. Может ли это быть в js-файле? configurable.js имеет reloadOldPrice() метод, который я пытался сбросить, но цена var всегда 0 любые идеи?Magento и decimels в корзине

ответ

0

правка

Мой предыдущий код не будет работать на самом деле. Я проверил следующее, и она работает:

// Wrap original reloadPrice function 
spConfig.reloadPrice = spConfig.reloadPrice.wrap(function(original){ 
    // Call original reloadPrice() function 
    original(); 

    // Get the DOM-element that contains the price 
    var priceSpan = $('product-price-'+this.config.productId).down(); 

    // Get the current value 
    var oldP = priceSpan.innerHTML; 

    // Change the value 
    var newP = oldP.sub('.00',''); 

    // Update the element 
    priceSpan.update(newP); 
}); 

В Magento spConfig объект, определенный как var spConfig = new Product.Config(...);, так что не забудьте добавить код я даю здесь после конкретизации spConfig.

Там еще предстоит проделать большую работу:

Я бы рекомендовал изменяя var line newP = oldP.sub('.00',''); к чему-то, что также улавливает ,00, так как в некоторых местах, которые будут формат цена.

Кроме того, если вы хотите, например, показывать цены включая и без учета налога на вышеприведенный код не будет работать, потому что $('product-price-'+this.config.productId).down() будет содержать два элемента (я думаю).

Если вы достаточно добавить код в файл configurable.js, вы должны добавить это нравится:

Product.Config.prototype.reloadPrice = Product.Config.prototype.reloadPrice.wrap(...); 

(обратите внимание на .prototype, который я забыл в моем первом ответе).


OLD POST (не работает)

В случае люди задаются вопросом, почему это не работает, в первую очередь он должен был Product.Config.prototype.formatPrice вместо Product.Config.formatPrice и, во-вторых, функция formatPrice, по-видимому, не несет ответственности за вывод цены html.

configurable.js также имеет функцию formatPrice, которая, вероятно, вызывается, когда цена обновляется.

Таким образом, вы можете попробовать:

Product.Config.formatPrice = Product.Config.formatPrice.wrap(function(originalFormatPrice, price, showSign) { 
    var str = originalFormatPrice(price, showSign); 
    return str.slice(0, -3); // remove last three characters (.00) 
}); 

+0

formatPrice не звонит, не нужно ли звонить? –

+0

Я допустил некоторые ошибки, я отредактировал ответ с помощью рабочего примера. –

+0

отлично, он работает, спасибо –

0
**Go your price.phtml file** 

линия нет 201

<?php echo $_coreHelper->currency($_price, true, true) ?> 

replace this code 

<?php $_prix = $_coreHelper->currency($_price,true,true) ?> 
<?php $_prix = str_replace(".00", "", $_prix); ?> 
<?php echo $_prix ?> 
+0

in price.phtml $ _prix уже без decimels. Децималы, появляющиеся при выборе какой-либо опции продукта –

+0

Найдите свое место, чтобы добавить продукт для цены, где использовать эту функцию. –

0

Попробуйте использовать свободное расширение ET Currency Manager. В этом расширении эта функция реализуется.

Смежные вопросы