Где формируется цифра и внешний вид цены?
Добрый день Василий! Доброго дня комьюнити!
Умные люди подскажите, пожалуйста, в каком файле формируется внешний вид цены?
В чем суть:
1. miniShop обрубает ноль после точки-разделителя в цене, т.е., например, вместо желаемого 8.50 выводит 8.5;
2. Как задать свой стиль для того, что после точки (для копейек или центов), например
8.50, да еще если «50» в верхнем регистре — смотрится куда лучше 8.50.
3. Возможно ли заменить точку-разделитель на запятую?
Почему я этим загоняюсь?
Юзабилити.
У нас еще ходят копейки и есть цена в валютах, где центы играют роль, особенно при пересчете скидок.
Цены вида 300.00, 525.00, 8.50, 7.40 воспринимаются покупателем гораздо легче, чем 300, 525, 8.5, 7.4. Ноли после после точки-разделителя или запятой-раздлителя, или в конце суммы, как ни странно, не тормозят взгляд покупателя. Подсознательно — это завершенное, «круглое» число.
ЗЫ. Во многих плгинах и CMS магазинов прсутсвует выбор вида разделителей и того, что отображается после него.
Василий! Вам огромное спасибо и невероятный респектише за проделанную работу, потраченное время и отзывчивость!
Вы умеете конкурировать и это вызывает еще большее уважение!
Умные люди подскажите, пожалуйста, в каком файле формируется внешний вид цены?
В чем суть:
1. miniShop обрубает ноль после точки-разделителя в цене, т.е., например, вместо желаемого 8.50 выводит 8.5;
2. Как задать свой стиль для того, что после точки (для копейек или центов), например
8.50, да еще если «50» в верхнем регистре — смотрится куда лучше 8.50.
3. Возможно ли заменить точку-разделитель на запятую?
Почему я этим загоняюсь?
Юзабилити.
У нас еще ходят копейки и есть цена в валютах, где центы играют роль, особенно при пересчете скидок.
Цены вида 300.00, 525.00, 8.50, 7.40 воспринимаются покупателем гораздо легче, чем 300, 525, 8.5, 7.4. Ноли после после точки-разделителя или запятой-раздлителя, или в конце суммы, как ни странно, не тормозят взгляд покупателя. Подсознательно — это завершенное, «круглое» число.
ЗЫ. Во многих плгинах и CMS магазинов прсутсвует выбор вида разделителей и того, что отображается после него.
Василий! Вам огромное спасибо и невероятный респектише за проделанную работу, потраченное время и отзывчивость!
Вы умеете конкурировать и это вызывает еще большее уважение!
Комментарии: 14
miniShop ничего не отрезает. На самом деле, в базе данных Mysql не хранятся лишние нолики.
Нет числа 8.50, есть 8.5 или 8.58, понимаете?
Поэтому, вам нужно написать простенький сниппет форматирования для цены, и вызывать его в чанках, где надо. rtfm.modx.com/display/revolution20/Input+and+Output+Filters+%28Output+Modifiers%29
Нет числа 8.50, есть 8.5 или 8.58, понимаете?
Поэтому, вам нужно написать простенький сниппет форматирования для цены, и вызывать его в чанках, где надо. rtfm.modx.com/display/revolution20/Input+and+Output+Filters+%28Output+Modifiers%29
Большое спасибо! Ушел сильно думать:)
есть такая функция в php для формирование формата вывода числа, number_format()
www.php.net/manual/ru/function.number-format.php
www.php.net/manual/ru/function.number-format.php
Спасбо, Иван!
Из прочитанного по ссылке делаю такие выводы:
по идее мне подойтет:
<?php
$number = 1234,56;
// снг формат без разделителей групп
$su_format_number = number_format($number, 2, ',', '');
?>
Результат: 1234,57
СНГ формат — вид чисел к которому мы привыкли со школы.
Судя из следуещего примера эта функция округляет числа.
т.е. .896 после разделителя (сепаратора) функция округлила до .90
(php таки наш человек =))
так же нашел подсказки для разного изврата :) с видом цены:
<?php
$number = 1234567.896;
echo '1: '.number_format($number, 2, ',', '').'
';
echo '2: '.number_format($number, 2, '.', '').'
';
echo '3: '.number_format($number, 2, ',', '.').'
';
echo '4: '.number_format($number, 2, '.', ',').'
';
echo '5: '.number_format($number, 2, ',', ' ').'
';
echo '6: '.number_format($number, 2, ',', "'").'
';
echo '7: '.number_format($number, 2, '', '').'
';
?>
Result:
1: 1234567,90 -> Decimal separado por, (сепаратор — запятая)
2: 1234567.90 -> Decimal separado por. (сепаратор — точка)
дальше — прочие извращения с разделителями)
3: 1.234.567,90 -> Moeda Brasil, Alemanha
4: 1,234,567.90 -> Inglês, USA
5: 1 234 567,90 -> França
6: 1'234'567,90 -> Suíça
7: 123456790 -> Sem decimal
хм… осталось домучать Василия с вопросом как это применить в виде снипета и куда его потом «всувать»…
Перечитал по его ссылке материал, совсем запутался…
Из прочитанного по ссылке делаю такие выводы:
по идее мне подойтет:
<?php
$number = 1234,56;
// снг формат без разделителей групп
$su_format_number = number_format($number, 2, ',', '');
?>
Результат: 1234,57
СНГ формат — вид чисел к которому мы привыкли со школы.
Судя из следуещего примера эта функция округляет числа.
т.е. .896 после разделителя (сепаратора) функция округлила до .90
(php таки наш человек =))
так же нашел подсказки для разного изврата :) с видом цены:
<?php
$number = 1234567.896;
echo '1: '.number_format($number, 2, ',', '').'
';
echo '2: '.number_format($number, 2, '.', '').'
';
echo '3: '.number_format($number, 2, ',', '.').'
';
echo '4: '.number_format($number, 2, '.', ',').'
';
echo '5: '.number_format($number, 2, ',', ' ').'
';
echo '6: '.number_format($number, 2, ',', "'").'
';
echo '7: '.number_format($number, 2, '', '').'
';
?>
Result:
1: 1234567,90 -> Decimal separado por, (сепаратор — запятая)
2: 1234567.90 -> Decimal separado por. (сепаратор — точка)
дальше — прочие извращения с разделителями)
3: 1.234.567,90 -> Moeda Brasil, Alemanha
4: 1,234,567.90 -> Inglês, USA
5: 1 234 567,90 -> França
6: 1'234'567,90 -> Suíça
7: 123456790 -> Sem decimal
хм… осталось домучать Василия с вопросом как это применить в виде снипета и куда его потом «всувать»…
Перечитал по его ссылке материал, совсем запутался…
Как и все фильтры вывода — [[+price:yoursnippetname]] в нужных местах.
Я же дал вам ссылку, смотрите там раздел «Creating a Custom Output Modifier»
Я же дал вам ссылку, смотрите там раздел «Creating a Custom Output Modifier»
вот! спасибо за действительно внятное объяснение!
Дело в том, что фильтры я еще особо не осваивал. Т.е. функционала заложенного Вами в miniShop, для моих целей, вполне достаточно. То, что попадалось под руку и нужно было править делал почти интуитивно :)
Материал, на который Вы дали ссылку перечмтал два раза, но пока Вы не показали «на пальцах» — путался)
Еще раз спасибо!
Дело в том, что фильтры я еще особо не осваивал. Т.е. функционала заложенного Вами в miniShop, для моих целей, вполне достаточно. То, что попадалось под руку и нужно было править делал почти интуитивно :)
Материал, на который Вы дали ссылку перечмтал два раза, но пока Вы не показали «на пальцах» — путался)
Еще раз спасибо!
ЗЫ. обязательно выложу код сниппета. Во первых — проверить правильность, во вторых — комунибудь да пригодится.
Вот пример моего модификатора по формированию цены
<?php
$output = number_format($input,(floor($input) == $input? 0: 2),'.',' ');
return $output;
<?php
$output = number_format($input,(floor($input) == $input? 0: 2),'.',' ');
return $output;
Вызываю вот так [[+price:num]]
Спасибо! Попробую и ваш вариант!
Но он обрезает нули если их нет в цене. Вам не подойдет
Вам такой нужен
<?php
$output = number_format($input,2,'.',' ');
return $output;
Вам такой нужен
<?php
$output = number_format($input,2,'.',' ');
return $output;
Иван, громадное спасибо! Сэкономили кучу времени и нервов, которые бы тратились на пробы и ошибки!:)
Пожалуйста.
Забавно и неудобно то, что при указании разделителя десятичных запятой — перестают обрезаться нули.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.