Последние темы


shopkeeper 3 - на странице товара не пересчитывает цену по курсу

  • Участник @leegaal написал в shopkeeper 3 - на странице товара не пересчитывает цену по курсу:

    И сделал поле которое считает итоговую цену товара с учетом вариаций: <span class="shk-price">[[*price:num_format]]</span>

    Тут должно быть

    [[*price:shk_curr_rate]]
    
  • @Andchir

    <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    

    Так? Если так, то не работает. Просто считает без учёта курса. Если так

    <span class="shk-price">[[*price:shk_curr_rate]]</span>
    

    То вообще супер большое число

  • То вообще супер большое число

    Какое число? Покажите ваши настройки курсов валют и какие получаются результаты.

    Указал курс ЕВРО 2.5.

    Откуда взяли цифру? Должно быть такое число: 0.013625

    0_1566843112631_screenshot_049.png

    https://www.calc.ru/kurs-EUR-RUB.html

  • В Беларуси Евро стоит 2,3 рубля. Указал 2,5 для теста, чтобы было легче проверить правильность расчётов в корзине. Цены я указываю не в рублях, а в евро. Пример: карандаш стоит 1 евро. Посетители должны видеть 2.3 рубля. Если курс евро вырос (а в Беларуси он растёт всегда😁 ), то я установлю курс 2.5 и карандаш будет стоить 2.5 рубля. Товаров будет достаточно много и вариаций ещё больше. Менять каждый товар нереально. Поэтому решил привязать к валюте. Вот пример товара:

    0_1566842824513_скрин.jpg
    На фото1 считает один к одному не учитывая курс 2,5. Прописано <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    0_1566843062233_скрин1.jpg
    На фото2 в корзине считает как надо, по курсу 2.5. Т.е. 18,82 *2,5 = 47,06

    0_1566843248852_скрин2.jpg
    На фото3 написал поле <span class="shk-price">[[*price:shk_curr_rate]]</span>
    И вот такую бредятину показывает. Но в корзину отправляет правильное число - 47,06

    Ниже настройки
    0_1566843444707_скрин3.jpg
    0_1566843500201_скрин4.jpg

  • Если цены изначально указаны в евро, то в настройках для евро нужно ввести единицу, т.к. ничего менять не нужно цена и так в евро. А для рублей указать по принципу, о котором я писал ранее. Нужно учитывать, что при расчете цены происходит просто деление цены на число, которое вы указываете.

  • @Andchir
    Ещё раз повторю проблему. Всё считает правильно. В корзине цена правильная. Неправильная только на странице товара. Цена не умножается на 2.5. (Возможно я не совсем понятно объясняю, прошу прощения)

    Вот это из инструкции shopkeeper. Сделал точно так же

    Если на сайте только одна валюта, но цены товаров указаны в другой валюте, нужно добавить в настройках системы параметр «shk3.currency_selected» (Пространство имен «shopkeeper3») со значением - номер валюты (от еденицы), в которую нужно переводить.
    Например, если у товаров указана цена в долларах, а нужно выводить в рублях:
    shk3.currency_default = 3 (USD)
    shk3.currency_selected = 1 (руб.)
    3 - номер валюты USD в списке курсов валют.
  • Я всё так и понял. Начинать надо как раз со страницы товара, а не с корзины. Я написал, что курсы у вас указаны не правильно. Если убрать все параметры, цена по курсу пересчитывается правильно?

    Цена не умножается на 2.5.

    Она и не должна умножаться, должна делиться. Читайте выше.

  • @Andchir
    Проверил. Убрал вариации. Если задать цену товара 26, то на странице пересчитывает по курсу и получается 65. В корзине тоже самое. Т.е. всё считает правильно. Вся проблема с выводом цены в этой строке

    <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    

    Если я укажу евро - 1, а рубль 0.44, то это тоже самое что 2.5 к 1. Так что математически нет смысла менять курс.
    Тем более я проверил, без вариаций всё считает правильно на двух страницах. Помогите 😩
    Может можно как-то эту строку через сниппет умножить на 2.5? Ведь в евро считает верно.

  • Если я укажу...

    Если вы не хотите делать так как вам советуют, то зачем просите помощи? Делайте сами.

    Ещё момент, умножение вроде должно работать, а вот сложение нет. Нужно проверить, чтобы среди параметров не было цен со сложением. Про сложение цен параметров с мультивалютностью где-то здесь на форуме есть тема.

  • @Andchir
    почему не хочу? Сделал как вы сказали. Я же написал, ничего не изменилось.
    Среди параметров нет сложения. Есть поле Price. В нем список параметров с ценами. d1==10||d2==20 и тд. А все остальные параметры только умножают.

    <span class="shk-price">[[*price:shk_curr_rate:num_format]]</span>
    

    Может есть способ как-то умножить это поле на 2.5?

  • почему не хочу? Сделал как вы сказали. Я же написал, ничего не изменилось.

    Где вы написали, что сделали как я сказал?

    Среди параметров нет сложения. Есть поле Price. В нем список параметров с ценами. d1==10||d2==20 и тд.

    Вы противоречите сами себе.

    Может есть способ как-то умножить это поле на 2.5?

    Есть. https://docs.modx.com/revolution/2.x/making-sites-with-modx/customizing-content/input-and-output-filters-(output-modifiers)

    [[*price:mpy=`2.5`]
    
  • @Andchir

    [[*price:mpy=`2.5`]
    

    выдаёт значение - 0.
    Я ещё раз прошу прощения если не так выразился. Но я попробовал сделать по вашему совету. Результата это не дало.
    И почему я себе противоречу? Поле Price называется диаметр. В нём можно выбрать диаметр к которому привязана соответствующая цена. Остальные параметры производят только умножение.
    0_1566906778443_6b50a656-f211-48b0-b721-d875908b32d0-image.png

  • И почему я себе противоречу? Поле Price называется диаметр.

    Потому что не важно как называется поле, если в его значении список значений, которые предполагается суммировать. Цена в любом случае должна быть не списком, а полем с одной цифрой. Если вам цифра не нужна, то можно поставить значение 0. Если не переводить валюту по курсу, то всё работает?

    При суммировании цена переводиться не будет т.к. для этого нужно все цены параметра переводить в шаблоне (чанке) этого списка.

    http://forum.modx-shopkeeper.ru/topic/1332/мультивалютность-param_edit-пересчет-доп-параметров-с-ценой-в-текущую-валюта/3

  • @Andchir
    Если не переводить по курсу, то всё работает.
    По поводу списка в поле price, то Вы правы. Задал одно значение и считает с учётом курса как надо.

  • @Andchir
    Большое спасибо. Главное что нашёл причину и сразу же нашёл решение. Возможно не самое правильное, но работает как нужно.
    В поле Price ввожу значение "1". Создал дополнительное поле диаметр. И вместо того чтобы складывать как было до этого, я умножаю на нужное число.
    К примеру: D=80==26.46||D=100==29.22 (было), D=80==*26.46||D=100==*29.22 (сделал).
    Поле price где единица я просто скрою.

 

Последние комментарии

  • @Yiliy

    то есть без имени

    Видимо потому что у вас отключено, а в XML алиаса я не увидел

    //автоматически генерировать псевдоним (alias) при импорте //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит. $cf_config['imp_autoalias'] = false;

    Читать далее
  • Y

    Проблема была оказывается в том, что оно не видело
    <Title>pagetitle</Title>
    Я поменял на
    <Title><item>pagetitle</item></Title>
    и все импортировалось успешно но теперь в каталогах вместо url ресурсов отображается /сайт/каталог/.html
    то есть без имени и после перехода на страницу товара появляется ошибка 403

    Читать далее
  • M

    Поменялся дизайн.
    Новая корзина, всплывающие окна и прочие фишки сверстаны. Нужно переподключить, разобраться с возможным конфликтом JS.
    Что, где и как лежит -- покажу.

    Скайп mas_hate

    Читать далее
  • В $cf_config['imp_xml_structure'] должен быть XML, который в файле повторяется. Также нужно настроить
    параметр $cf_config['imp_xml_itemsparent_path']. Покажите полный файл, который импортируете.

    Читать далее