Всего 123 682 комментария

Иван Брежнев
02 октября 2012, 20:22
0
Но он обрезает нули если их нет в цене. Вам не подойдет
Вам такой нужен
<?php
$output = number_format($input,2,'.',' ');
return $output;
Иван Волков
02 октября 2012, 20:21
0
Спасибо! Попробую и ваш вариант!
Иван Волков
02 октября 2012, 20:17
0
ЗЫ. обязательно выложу код сниппета. Во первых — проверить правильность, во вторых — комунибудь да пригодится.
Иван Брежнев
02 октября 2012, 20:16
0
Вызываю вот так [[+price:num]]
Иван Брежнев
02 октября 2012, 20:16
0
Вот пример моего модификатора по формированию цены

<?php
$output = number_format($input,(floor($input) == $input? 0: 2),'.',' ');
return $output;
Иван Волков
02 октября 2012, 20:15
0
вот! спасибо за действительно внятное объяснение!
Дело в том, что фильтры я еще особо не осваивал. Т.е. функционала заложенного Вами в miniShop, для моих целей, вполне достаточно. То, что попадалось под руку и нужно было править делал почти интуитивно :)
Материал, на который Вы дали ссылку перечмтал два раза, но пока Вы не показали «на пальцах» — путался)
Еще раз спасибо!
Василий Наумкин
02 октября 2012, 19:14
0
Как и все фильтры вывода — [[+price:yoursnippetname]] в нужных местах.

Я же дал вам ссылку, смотрите там раздел «Creating a Custom Output Modifier»
Sadykh Sadykhov
02 октября 2012, 18:00
0
Кстати, однажды я спрашивал это на сообществе, тогда видимо была та же ошибка, но каким-то другим (не знаю каким) способом исправил проблему. Теперь буду знать, спасибо всем.
Sadykh Sadykhov
02 октября 2012, 17:58
0
По умолчанию так.
Иван Волков
02 октября 2012, 17:54
0
Спасбо, Иван!
Из прочитанного по ссылке делаю такие выводы:
по идее мне подойтет:

<?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

хм… осталось домучать Василия с вопросом как это применить в виде снипета и куда его потом «всувать»…
Перечитал по его ссылке материал, совсем запутался…
Valentin Rasulov
02 октября 2012, 17:48
0
Система -> Настройка ситемы
Фильтр по разделу -> Кеширование
параметр cache_default -> Да
Иван Брежнев
02 октября 2012, 16:53
0
есть такая функция в php для формирование формата вывода числа, number_format()
www.php.net/manual/ru/function.number-format.php
Sadykh Sadykhov
02 октября 2012, 15:14
0
Стыдно, как-то всё просто оказалось.

Это я так понимаю нормальное явление, не баг? Логично было сделать при галочке «опубликовать» обязательную чистку кеша, а не отдельно, или я чего-то не понимаю.
Иван Волков
02 октября 2012, 15:11
0
Большое спасибо! Ушел сильно думать:)
Василий Наумкин
02 октября 2012, 15:08
0
На вкладке «Дополнительно» при работе с ресурсами есть галочка «Очищать кэш».

Надо активировать.
Василий Наумкин
02 октября 2012, 15:07
0
Да, конечно.

У меня используется мой недоделанный компонент Tickets, полностью работающий через свои процессоры, и вызывающий системные, когда ему нужно.

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

Поэтому, пока никаких статей, и на вопросы отвечаю через раз.
Василий Наумкин
02 октября 2012, 15:03
0
miniShop ничего не отрезает. На самом деле, в базе данных Mysql не хранятся лишние нолики.
Нет числа 8.50, есть 8.5 или 8.58, понимаете?

Поэтому, вам нужно написать простенький сниппет форматирования для цены, и вызывать его в чанках, где надо. rtfm.modx.com/display/revolution20/Input+and+Output+Filters+%28Output+Modifiers%29