Здравствуйте Евгений. Если рассмотреть в шаблоне, как выводится миникарточка товара - например с помощью модуля UImaxShop/html/mod/item-product-2.htm, то там можно увидеть вот такой фрагмент кода:
{$priceFinal = $emulator->easyPrice($priceFinal)}
<div class="cen">
{$priceFinal} {sign}
</div>
Отсюда видно, что некая ранее извлечённая из базы данных финальная цена товара при выводе на экран форматируется с помощью какой-то функции easyPrice, запрограммированной в эмуляторе (хелпере) шаблона.
Тогда лезем посмотреть в файл UImaxShop/html/helper.php - хотим знать, как на самом деле работает функция и почему пробел появляется после трёх разрядов и отсутствует после шестого. Так вот там наблюдаем функцию с таким кодом:
public function easyPrice ( $price ) {
$price = '' . intval($price);
return preg_replace('/^([0-9]+)([0-9][0-9][0-9])$/', '$1 $2', $price);
}
Ну да, сборщик шаблона, получается, тут слегка накосячил - регулярное выражение учитывает только ситуацию цен не длинее 6 разрядов. Им в принципе не рассматривался вариант, что будет если ту же страницу станут смотреть в ценах сильно просевшей по курсу валюты. Или шаблон станут использовать в магазине высоких по цене товаров, как в вашем случае.
Исправим баг самым простым, так сказать костыльным образом до 9 разрядов. Перепишем код функции вот так:
public function easyPrice ( $price ) {
$price = '' . intval($price);
$price = preg_replace('/^([0-9]+)([0-9]{3})([0-9]{3})$/', '$1 $2 $3', $price);
return preg_replace('/^([0-9]+)([0-9]{3})$/', '$1 $2', $price);
}
Теперь при выводе цен будет добавляться пробел после 3-его и 6-го разрядов.