Вместо цены 0 выводить надпись (под запрос,договорная)

Тема в разделе "Общие вопросы", создана пользователем Hero, 22 май 2017.

  1. SiteMix

    SiteMix Продвинутый пользователь

    Сообщения:
    1.053
    Симпатии:
    182
    На главной выводятся модули и нужно править фрагменты кода и для них. Предыдущий фрагмент для примера правок, только для страницы товара, причём, только для самого товара. Там есть ещё модуль связанных товаров и для него тоже надо править.
     
  2. Mev77

    Mev77 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Подскажите пожалуйста какой файлик нужно править?
     
  3. SiteMix

    SiteMix Продвинутый пользователь

    Сообщения:
    1.053
    Симпатии:
    182
    Файл тот же, но там ниже есть замена в модулях. Там и нужно подкорректировать согласно коду шаблона.
    Например, <file path="catalog/view/theme/unishop2/template/product/{category,compare,manufacturer_info,product,search,special}.twig">
    В общем, всё места где ищется путь *.twig нужно смотреть какой фрагмент кода ищется, сравнивать с тем что есть в соответствующих файлах в шаблоне и корректировать модификатор.
     
  4. Mev77

    Mev77 Новичок

    Сообщения:
    4
    Симпатии:
    0
    Спасибо за ответ. Подскажите может вы знаете как убрать корзину в OpenCart 3.0.3 в шаблоне Unishop2 ?
     
  5. Andrei_Horbau

    Andrei_Horbau Новичок

    Сообщения:
    1
    Симпатии:
    0
    Добрый вечер! Подскажите, пожалуйста, где в файле install.xml поменять 0 на 0.1? Если можно - номера строк. Чтобы выводилось - Цена по запросу, не при стоимости товара - 0, а 0.1.
    price_request_oc3.ocmod
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    4.082
    Симпатии:
    1.102
    Поиск по файлу покажет вам строчку с price_value == 0
     
  7. solanj

    solanj Пользователь

    Сообщения:
    72
    Симпатии:
    1
    Подскажите. пожалуйста. Нужно убрать цену совсем , если она 0 .
    Версия 3.0.3 шаблон fastor

    в карточке товара получилось. в контроллеры ни чего не прописывала, просто в product.twig
    вместо
    {% endif %}
    {% if (not special) %}
    прописала
    {% if price == 0 %}
    {% elseif not special %}
    все сработало.

    пытаюсь по аналогии сделать в категории. но ни чего не выходит.
    код здесь
    {% if (product['price']) %}
    <div class="price">
    {% if (not product['special']) %}
    {{ product['price'] }}
    {% else %}
    <span class="price-old">{{ product['price'] }}</span> <span class="price-new">{{ product['special'] }}</span>
    {% endif %}
    </div>
    {% endif %}


    как только не подставляла уже даже всех вариантов не помню
    подскажите как правильно сделать. ни каких текстов не нужно, просто скрыть цену
     
  8. Blast

    Blast Продвинутый пользователь

    Сообщения:
    258
    Симпатии:
    87
    ну если по аналогии с вашим кодом, то должна сработать замена
    {% if (not product['special']) %}
    на
    {% if product['price'] == 0 %}
    {% elseif (not product['special']) %}
     
  9. Gooodwin

    Gooodwin Новичок

    Сообщения:
    2
    Симпатии:
    0
    Добрый день!
    Не могу ни как справиться)
    Шаблон Простор, установка модуля ничего не меняет.
    Вручную исправлял значения - не помогло
    Кто сталкивался?
     
  10. Ravilr

    Ravilr Специалист

    Сообщения:
    4.082
    Симпатии:
    1.102
    Все модули делаются только под шаблоны по умолчанию. Под другие нужны корректировки.

    Обычно обновления кеша модификатров хоть как то помогает увидеть ошибки.
     
  11. Ravilr

    Ravilr Специалист

    Сообщения:
    4.082
    Симпатии:
    1.102
    Нет, это не ошибки. Не нужна тут такая портянка в сообщении. Это лог изменений модификатором. Почитайте пожалуйста документацию и прочее, если хотите самостоятельно что то сделать.
     
  12. Gooodwin

    Gooodwin Новичок

    Сообщения:
    2
    Симпатии:
    0
    Я удалил

    Прошу прощения, на этом форуме я новенький. По опенкарту знания слабые, да и не лезу ни куда, так, поверхостно.

    Если подскажите, то буду благодарен, если есть возможность платной услуги в подгоне модуля под мой шаблон, то я готов рассмотреть.
     
  13. SiteMix

    SiteMix Продвинутый пользователь

    Сообщения:
    1.053
    Симпатии:
    182
    Напишите в личку если ещё актуально.
     
  14. criticis

    criticis Новичок

    Сообщения:
    3
    Симпатии:
    0
    ocStore 3.0.3.7
    Шаблон 'prostore'

    Модификатор загрузил, пути к шаблону поправил. Везде работает, но в карточке товара всегда теперь текст в цене. Не зависимо от того, нулевая стоимость или нет. Замена происходит везде.

    Куда копать?
     
  15. criticis

    criticis Новичок

    Сообщения:
    3
    Симпатии:
    0
    Нашел, что проблема в модификаторе "Обновление цены при выборе опций OC3 (без AJAX)"
    Когда его отключаешься, то всё ок.

    Но так и не понял пока что, как исправить это.
     
  16. karpov

    karpov Продвинутый пользователь

    Сообщения:
    1.529
    Симпатии:
    245
    Найдите кого нибудь, кто сможет адаптировать модуль. Вот так на бум вам никто не поможет.
     
  17. criticis

    criticis Новичок

    Сообщения:
    3
    Симпатии:
    0
    Да думал мало-ли, распространённая проблема и ответ очевиден :)
     
  18. zaitsevlab

    zaitsevlab Новичок

    Сообщения:
    1
    Симпатии:
    0
    В модификаторе Обновление цены при выборе опций OC3 (без AJAX) добавляем условие для отображения ткста при 0 цене. Если кому то понадобиться.

    ищем это <file path="catalog/view/theme/*/template/product/product*.twig"> и заменяем script

    Код:
    <!--autocalc_price_option_v4-->
    <script type="text/javascript"><!--
    function price_format(price) {
        if (price === 0) return "ТУТ ТИПА ТЕКСТ"; // Добавлено условие для 0
        c = {{ autocalc_currency.decimals }};
        d = '{{ autocalc_currency.decimal_point }}';
        t = '{{ autocalc_currency.thousand_point }}';
        sl = '{{ autocalc_currency.symbol_left }}';
        sr = '{{ autocalc_currency.symbol_right }}';
        n = price * {{ autocalc_currency.value }};
        i = parseInt(n = Math.abs(n).toFixed(c)) + '';
        j = ((j = i.length) > 3) ? j % 3 : 0;
        price_text = sl + (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) : '') + sr;
    
        {% if autocalc_currency2 %}
        c = {{ autocalc_currency2.decimals }};
        d = '{{ autocalc_currency2.decimal_point }}';
        t = '{{ autocalc_currency2.thousand_point }}';
        sl = '{{ autocalc_currency2.symbol_left }}';
        sr = '{{ autocalc_currency2.symbol_right }}';
        n = price * {{ autocalc_currency2.value }};
        i = parseInt(n = Math.abs(n).toFixed(c)) + '';
        j = ((j = i.length) > 3) ? j % 3 : 0;
        price_text += '<span class="currency2">(' + sl + (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) : '') + sr + ')</span>';
        {% endif %}
        return price_text;
    }
    
    function points_format(v) {
        return v.toFixed(0);
    }
    
    function process_discounts(price, quantity) {
        {% for discounts in discounts_raw %}
        if (quantity >= {{ discounts.quantity }}) {
            price = {{ discounts.price }};
        }
        {% endfor %}
        return price;
    }
    
    function calculate_tax(price) {
        var p = price;
        {% for tax_rate in tax_rates %}
        {% if tax_rate.type == 'F' %}
        p += {{ tax_rate.rate }};
        {% endif %}
        {% if tax_rate.type == 'P' %}
        p += price * {{ tax_rate.rate / 100.0 }};
        {% endif %}
        {% endfor %}
        return p;
    }
    
    function autocalc_aap(s, p, ff) {
        $(s).each(function() {
            var $t = $(this);
            $({ value: $t.data('value') || 0 }).animate({
                value: p
            }, {
                easing: 'swing',
                duration: 500,
                step: function(value) {
                    $t.html(ff(value));
                    $t.data('value', value);
                }
            });
        });
    }
    
    function recalculateprice() {
        var main_price = {{ apo_price_value + 0.0 }};
        var special = {{ apo_special_value + 0.0 }};
        var input_quantity = Number($('#product input[name="quantity"]').val()) || 1;
        var discount_coefficient = 1;
        var option_price = 0;
        var discount_quantity = 0;
    
        $('#product .owq-option input[type="checkbox"]').each(function() {
            $qty = $(this).closest('tr').find('.owq-input');
            if ($(this).data('split') == '/') discount_quantity += Number($qty.val()) || 0;
        });
        if (discount_quantity == 0) discount_quantity = input_quantity;
    
        {% if special %}
        special_coefficient = {{ apo_price_value / apo_special_value }};
        {% else %}
        {% if autocalc_option_discount %}
        if (main_price) discount_coefficient = process_discounts(main_price, discount_quantity) / main_price;
        {% else %}
        main_price = process_discounts(main_price, discount_quantity);
        {% endif %}
        {% endif %}
    
        {% if points %}
        var points = {{ apo_points_value }};
        $('#product input:checked,#product option:selected').each(function() {
            if ($(this).data('points')) points += Number($(this).data('points'));
        });
        autocalc_aap('.autocalc-product-points', points, points_format);
        {% endif %}
    
        $('#product input:checked,#product option:selected').each(function() {
            if ($(this).data('prefix') == '=') {
                option_price += Number($(this).data('price'));
                main_price = 0;
                special = 0;
            }
        });
    
        $('#product input:checked,#product option:selected').each(function() {
            if ($(this).data('prefix') == '+') {
                option_price += Number($(this).data('price'));
            }
            if ($(this).data('prefix') == '-') {
                option_price -= Number($(this).data('price'));
            }
            if ($(this).data('prefix') == '%') {
                pcnt = 1.0 + (Number($(this).data('price')) / 100.0);
                option_price *= pcnt;
                main_price *= pcnt;
                special *= pcnt;
            }
            if ($(this).data('prefix') == '*') {
                option_price *= Number($(this).data('price'));
                main_price *= Number($(this).data('price'));
                special *= Number($(this).data('price'));
            }
            if ($(this).data('prefix') == '/') {
                option_price /= Number($(this).data('price'));
                main_price /= Number($(this).data('price'));
                special /= Number($(this).data('price'));
            }
        });
    
        special += option_price;
        main_price += option_price;
    
        {% if special %}
        {% if autocalc_option_special %}
        special = main_price / special_coefficient;
        {% else %}
        main_price = special * special_coefficient;
        {% endif %}
        tax = special;
        {% else %}
        {% if autocalc_option_discount %}
        main_price *= discount_coefficient;
        {% endif %}
        tax = main_price;
        {% endif %}
    
        {% if tax %}
        main_price = calculate_tax(main_price);
        {% if special %}
        special = calculate_tax(special);
        {% endif %}
        {% endif %}
    
        {% if not autocalc_not_mul_qty %}
        if (input_quantity > 0) {
            main_price *= input_quantity;
            special *= input_quantity;
            {% if tax %} tax *= input_quantity; {% endif %}
        }
        {% endif %}
    
        autocalc_aap('.autocalc-product-price', main_price, price_format);
        autocalc_aap('.autocalc-product-special', special, price_format);
        autocalc_aap('.autocalc-product-tax', tax, price_format);
    }
    
    $(document).ready(function() {
        $('#product input[type="checkbox"],#product input[type="radio"],#product select').each(function() {
            if ($(this).data('autocalc')) return;
            $(this).data('autocalc', 1).on('change', function() {
                recalculateprice();
            });
        });
        $('#product input[name="quantity"]').each(function() {
            if ($(this).data('autocalc')) return;
            var $q = $(this);
            $q.data('autocalc', 1).data('val', $q.val());
            (function() {
                if ($q.val() != $q.data('val')) {
                    $q.data('val', $q.val());
                    recalculateprice();
                }
                setTimeout(arguments.callee, 250);
            })();
        });
    
        {% if autocalc_select_first %}
        $('#product select[name^="option"] option[value=""]').remove();
        last_name = '';
        $('#product input[type="radio"][name^="option"]').each(function() {
            if ($(this).attr('name') != last_name) $(this).prop('checked', true);
            last_name = $(this).attr('name');
        });
        {% endif %}
    
        recalculateprice();
    });
    //--></script>