Читал, теперь все нормально... Спасибо. Подытожим... ocStore 2.3.0.2.3: Открываем admin/controller/catalog/product.php Ищем: Код: 'price' => $result['price'], Заменяем на: Код: 'price' => round($result['price'], 2), Ищем: Код: 'special' => $special, Заменяем на: Код: 'special' => round($special, 2),
Всем привет! Подскажите, пожалуйста, решение - убрать 0000 после запятой в цене, оставив только значение в рублях для ОС 3. Приведенный здесь вариант не помог...
потому что в приведенном варианте задается 2 знака после запятой если округлить до целого PHP: 'price' => round($result['price'])
В листинге цена правильная, без копеек. Но в карточке товара цена отображается с четырьмя нулями после запятой. Соответственно, в тайтле и описании цена тоже указывается с четырьмя нулями после запятой. Пробовал и два знака оставить и как вы говорите...не получается... Причем в admin/controller/catalog/product.php два раза встречается $result['price']. Менял и и по одному и два... Что не так делаю?
при добавлении\редактировании товара отрабатывает метод getForm() c ценой работает код PHP: if (isset($this->request->post['price'])) { $data['price'] = $this->request->post['price']; } elseif (!empty($product_info)) { $data['price'] = $product_info['price']; } else { $data['price'] = ''; }
я правильно понял, что в admin/controller/catalog/product.php ничего менять не нужно? округлять цену нужно в нём? Прошу прощения за глупые вопросы...
нет. я смотрю, у вас нет ни малейшего представления о php нафига вы лезите в код. может заплатить кому? заменить нужно $product_info['price'] на round($product_info['price'])
Да, не понимаю ничего в php, поэтому и спросил тут. Заменил, в карточке товара цена округлилась до целых рублей. Но в тайтле и описании товара, если она там есть, цена осталась с нулями. Стоит модуль Обновление МЕТА. Все равно спасибо большое за помощь!
Тема с четырьмя нулями давно обсуждают на форумах и предлагают разные решения, от смены формата в базе данных PHP: ALTER TABLE `product` CHANGE `price` `price` DECIMAL( 15, 0 ) NOT NULL DEFAULT '0.0000'; (DECIMAL(15, 2) - оставив только 2 нуля или DECIMAL(15, 0) - не оставив совсем нулей), до использования встроенных php функций (int), round(), number_format() и эти варианты тоже рабочие. Но нужно ведь учитывать, что к цене могут быть применены tax (наценки), к тому-же к цене может быть приклеена валюта (в которой исчисляется эта самая цена), валюта передаётся через сессию. И поэтому в самом ОС есть методы которые зачастую (не считая редких исключений) разумнее применять. Для начала нужно проверить в настройках ОС (Система->Локализации->Валюты->Десятичные знаки), сколько знаков после запятой вы хотите. Потом использовать встроенные методы: PHP: $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); По сути метод $this->currency->format принимает 2 аргумента и если не хотите использовать tax, то достаточно будет сделать так, где вторым аргументом передать валюту: PHP: $price = $this->currency->format($result['price'], $this->session->data['currency']);