Как сделать правильно замену строки кода в ocmod opencart 2?

Alexeina66

Мой дом здесь!
Регистрация
26 Авг 2013
Сообщения
415
Реакции
436
Всем привет!

При помощи ocmod`а делаю замену в строке цены в категории товара, так чтобы получилось цены/единица измерения, но при обновлении страницы замененная строка пропадает, так как срабатывает скрипт обновления цены в зависимости от количества.
Подскажите как поправить скрипт, чтобы корректно отображалась строка.
Код:
<?php echo $product['price'] . ($product['unit'] ? '/' . $product['unit'] :''); ?>

Шаблон - нестандартный
ocmod
Код:
<operation error="skip">
            <search trim="true" index="0"><![CDATA[<?php echo $product['price']; ?>]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[<?php echo $product['price'] . ($product['unit'] ? '/' . $product['unit'] :''); ?>]]></add>
        </operation>
Скрипт
Код:
var price_no_format = parseFloat(price);
  var new_price = (price_no_format + options_price) * quantity;
    var start_price = parseFloat($(mod +' .price_no_format_' + product_id).html().replace(/\s*/g,''));
    var price = new_price;
    $({val:start_price}).animate({val:price}, {
      duration: 400,
      step: function(val) {
        $(mod +' .price_no_format_'+product_id).html(price_format(val));
      }
    });
 
Всем привет!

При помощи ocmod`а делаю замену в строке цены в категории товара, так чтобы получилось цены/единица измерения, но при обновлении страницы замененная строка пропадает, так как срабатывает скрипт обновления цены в зависимости от количества.
Подскажите как поправить скрипт, чтобы корректно отображалась строка.
Код:
<?php echo $product['price'] . ($product['unit'] ? '/' . $product['unit'] :''); ?>

Шаблон - нестандартный
ocmod
Код:
<operation error="skip">
            <search trim="true" index="0"><![CDATA[<?php echo $product['price']; ?>]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[<?php echo $product['price'] . ($product['unit'] ? '/' . $product['unit'] :''); ?>]]></add>
        </operation>
Скрипт
Код:
var price_no_format = parseFloat(price);
  var new_price = (price_no_format + options_price) * quantity;
    var start_price = parseFloat($(mod +' .price_no_format_' + product_id).html().replace(/\s*/g,''));
    var price = new_price;
    $({val:start_price}).animate({val:price}, {
      duration: 400,
      step: function(val) {
        $(mod +' .price_no_format_'+product_id).html(price_format(val));
      }
    });
Скрипт в файле шаблона или в js файле?
Если в файле шаблона, то сделайте так :
Код:
var price_no_format = parseFloat(price);
  var new_price = (price_no_format + options_price) * quantity;
    var start_price = parseFloat($(mod +' .price_no_format_' + product_id).html().replace(/\s*/g,''));
    var price = new_price;
    $({val:start_price}).animate({val:price}, {
      duration: 400,
      step: function(val) {
        $(mod +' .price_no_format_'+product_id).html(price_format(val) + '<?php echo $product['unit']; ?>');
      }
    });
Вот я эту строчку изменил $(mod +' .price_no_format_'+product_id).html(price_format(val) + '<?php echo $product['unit']; ?>');
 
newstore
 
У вас по всей видимости стоит ocmod Обновление цены при выборе опций OC2 (без AJAX)

он и меняет цену!
для добавление своего кода измените файл ocmod(Обновление цены при выборе опций OC2 (без AJAX))
найдите функцию
function price_format_autocalc(n)

в ней найдите

s_right = '<?php echo $currency_autocalc['symbol_right']; ?>';
после него вставьте нужное вам значение

например так

s_my = '<?php echo $my_var; ?>';

и в этой же функции в конец return добавьте вашу переменную

return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '') + s_right + s_my;
 
Назад
Сверху