[Решено] Цены без копеек на витрине

Приветствую всех.

Возник вопрос: как убрать копейки из цены товаров на витрине?

У нас цены на все товары установлены в целых рублях без копеек и эти 2 ноля не несут никакого смысла. К тому же есть мнение (читал про исследования), что подсознательно такая цена воспринимается более высокой, чем при короткой записи без нолей. И правда, когда посмотрел в первый раз после изменения - всё такое дешёвое))

Я в настройках валют указал, чтобы отображалось ноль знаков после запятой. Но теперь стоимости доставки, скидок и т.п. просто стали округляться. И в 1С размер скидки вместо 3%, например, выгружается у каждого товара разный, как удалось округлить - 2,7%; 3,2%…

Кто подскажет, как по-человечески убрать ОТОБРАЖЕНИЕ копеек только в цене товаров, но не доставок, скидок и прочего?

1 лайк

app/functions/smarty_plugins/modifier.format_price.php

попробуйте заменить

$currency['decimals'],

нв

0,

(!) Не тестировано

1 лайк

Округляет доставки и скидка в корзине до рублей. Похоже в этом массиве как раз настройки валюты из админки.

Вот такой код попробуйте

(AREA == 'C') ? 0 : $currency['decimals'],

Это округлит только для витрины. Для админки, базы и 1с будут использоваться значения с копейками

1 лайк

Спасибо за подсказку.
Я написал
(substr($price, -2) == ‘0’) ? 0 : $currency[‘decimals’],
оно убирает копейки на витрине, но не убирает в Корзине, Оформлении заказа и в деталях заказа ЛК пользователя. Ну, хотя бы так.

Хорошо бы настройку в Карте, чтобы незначащие ноли в цене откидывались.

2 лайка

Попробовал, вроде работает, будем тестировать дальше

1 лайк

а подскажите, пожалуйста, как сделать для определенных витрин только?

Нужно добавить условие по ID витрин

if (in_array(Registry::get('runtime.company_id'), [1, 5, 7])) {
    .....
}

где 1,5,7 - ID нужных витрин

1 лайк

У меня это работает, но если подставить вместо 0 свою переменную, то срабатывает в карточке и плитках товара, но не работает в корзине, миникорзине и в оформлении заказа.
На ценах по акции тоже не работает. Почему так?

Не могу сказать. Все цены проходят через этот скрипт на витрине.

Также пользуюсь вашим кодом для удаления копеек на витрине. Спасибо.
(AREA == 'C') ? 0 : $currency['decimals'],

Можно ли сделать, что бы копейки на витрине остались только в НДС? Так как при оформлении заказа создаются счета на оплату для юр.лиц и там нужный точный расчет НДС с копейками.

2 строчками не отделаться, нужны более сложные изменения

не знаю насколько мой путь правильный. сделал в app/functions/smarty_plugins файл modifier.format_price_without_copecs.php (2,1 КБ)
modifier.format_price_without_copecs.php

добавил в свой шаблон /templates/common/ шаблон цены price_without_copecs.tpl - это клон responsive шаблона /templates/common/price.tpl

в котором поменял строки
{$value|format_price:

на

{$value|format_price_without_copecs:

и там где мне надо вывести цену буез копеек

product_data.tpl например , то заменяю

{include file=“common/price.tpl”

на

{include file=“common/price_without_copecs.tpl”

Надеюсь при обновлении ядра не затрется мой модификатор смарти

1 лайк

Убрать ноли в копейках из цен

150,00 → 150
150,10 → 150,1
150,11 → 150,11

в файле
app/functions/smarty_plugins/modifier.format_price.php

перед
// negative values

вставить
$value = floatval($value);

2 лайка