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

Тема в разделе "Opencart 2", создана пользователем Alexeina66, 24 ноя 2019.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Постинг нескольких постов подряд приравнивается к НАРУШЕНИЮ! Будьте вежливы и соблюдайте правила ;-)
  1. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    391
    Симпатии:
    404
    Всем привет!

    При помощи 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));
          }
        });
    
     
  2. giorno

    giorno

    Регистр.:
    18 сен 2017
    Сообщения:
    170
    Симпатии:
    99
    Скрипт в файле шаблона или в 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']; ?>');
     
    Alexeina66 нравится это.
  3. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    391
    Симпатии:
    404
    В js файле
     
  4. giorno

    giorno

    Регистр.:
    18 сен 2017
    Сообщения:
    170
    Симпатии:
    99
    Какое название шаблона?
     
  5. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    391
    Симпатии:
    404
    newstore
     
  6. giorno

    giorno

    Регистр.:
    18 сен 2017
    Сообщения:
    170
    Симпатии:
    99
    У вас по всей видимости стоит 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;
     
    Alexeina66 нравится это.