Тема: Вывод знака рубля

Здравствуйте!

У меня в шаблоне знак рубля выводиться из fonts awesome, вот так <i class="fa fa-rub"></i>
В админке я  не могу так прописать "символ". Какие есть варианты чтобы вывести html вместо надписи "руб."

Повысить оценку Понизить оценку

Re: Вывод знака рубля

Ну на данный момент там длинна поля не позволяет вставить такой код. Вы можете внести предложение у нас в helpdesk.readyscript.ru с увеличением этого поля.

А пока есть 2 решения проблемы.
1 Вариант:
Перегрузить шаблоны и прописать Вам вывод рубля.

2 Вариант (Ленивый):
Оставить в настройках руб. . А в JS просто сделать при подгрузке страницы подмену руб. на Ваш код. Для всплывающих окон срабатывает событие new-content, т.е. на него тоже можно подвеситься.

Re: Вывод знака рубля

Да, сделал первым вариантом. Проблема возникла пока что только с корзиной, там вывожу сумму вот так {$cart_info.total_unformatted|number_format:0:" ":" "}, но при обновлении корзины все равно данные приходят вместе с валютой и добавляется опять "руб."

Повысить оценку Понизить оценку

Re: Вывод знака рубля

Да, сделал первым вариантом. Проблема возникла пока что только с корзиной, там вывожу сумму вот так {$cart_info.total_unformatted|number_format:0:" ":" "}

У нас есть модификатор format_price, он сделает всё необходимое с ценой. Например:

{$cart_info.total_unformatted|format_price}

Что касается корзины при обновлении то там передаются и не форматированные данные в json который возвращается при манипуляции с товарами. Сам код находится в js папке с Вашей темой в common.js.
Функция updateCartBlock.
Там при можно поменять вывод и при помощи console.log посмотреть, что приходит в serverData.

Re: Вывод знака рубля

И ещё момент с оформлением заказа. Там будет переменная $cart_data, которая тоже будет с уже отформатированными данными. Она либо назначается в шаблон сразу, либо при помощи метода в объекте заказа getCartData.
Для того, чтобы получить не форматированные данные, можно либо переназначить переменную:

{$cart_data=$order->getCart()->getCartData(false, false)} {* false означает сделать неформатированными данные *}

Либо указать у этого метода false, false, если он в шаблоне присутствует.

6 Отредактировано Дмитрий (06.07.2016 17:45:35)

Re: Вывод знака рубля

Закусило Александр пишет:

Да, сделал первым вариантом. Проблема возникла пока что только с корзиной, там вывожу сумму вот так {$cart_info.total_unformatted|number_format:0:" ":" "}

У нас есть модификатор format_price, он сделает всё необходимое с ценой. Например:

{$cart_info.total_unformatted|format_price}

Что касается корзины при обновлении то там передаются и не форматированные данные в json который возвращается при манипуляции с товарами. Сам код находится в js папке с Вашей темой в common.js.
Функция updateCartBlock.
Там при можно поменять вывод и при помощи console.log посмотреть, что приходит в serverData.

В serverData.cart приходит форматированное значение с "руб." и не форматированное без "руб.", в итоге подставил не форматированное значение

$(data.options.cartTotalPrice, $this).text(serverData.cart.total_unformated); 

но т.к. оно не форматированное, то выводиться без отделения тысяч. В js честно сказать не очень, может подскажете как отформатировать вывод?

Повысить оценку Понизить оценку

Re: Вывод знака рубля

2 Вариант (Ленивый):
Оставить в настройках руб. . А в JS просто сделать при подгрузке страницы подмену руб. на Ваш код. Для всплывающих окон срабатывает событие new-content, т.е. на него тоже можно подвеситься.

Такой вариант наверное проще, но есть вероятность что замениться не там где это надо.

Повысить оценку Понизить оценку

Re: Вывод знака рубля

В общем в итоге надо выводить вот так, чтобы без значений валюты и отформатированое число было:

$(data.options.cartTotalPrice, $this).text(String(serverData.cart.total_unformated).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));

Повысить оценку Понизить оценку

Re: Вывод знака рубля

Я думаю будет лучше так

.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1 ');

10

Re: Вывод знака рубля

Закусило Александр пишет:

Я думаю будет лучше так

.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1 ');

Только он так еще копейки выводит, а мне они не нужны.

Повысить оценку Понизить оценку

11 Отредактировано Закусило Александр (07.07.2016 19:56:45)

Re: Вывод знака рубля

toFixed - приводит к числу с плавающей точкой. Первый аргумент это количество чисел после запятой
https://developer.mozilla.org/ru/docs/W … er/toFixed

.toFixed().replace(/(\d)(?=(\d{3})+\.)/g, '$1 ');

Тада! smile

12 Отредактировано Дмитрий (16.07.2016 13:39:27)

Re: Вывод знака рубля

Закусило Александр пишет:

И ещё момент с оформлением заказа. Там будет переменная $cart_data, которая тоже будет с уже отформатированными данными. Она либо назначается в шаблон сразу, либо при помощи метода в объекте заказа getCartData.
Для того, чтобы получить не форматированные данные, можно либо переназначить переменную:

{$cart_data=$order->getCart()->getCartData(false, false)} {* false означает сделать неформатированными данные *}

Либо указать у этого метода false, false, если он в шаблоне присутствует.

А в шаблоне cartpage.tpl как переопределить переменную $cart_data?

Повысить оценку Понизить оценку

Re: Вывод знака рубля

Там доступна переменная $cart, которая содержит объект корзины. Соответственно так:

{$cart_data=$cart->getCartData(false, false)}