Drupal Commerce. Вывод цены без копеек

Главные вкладки

Аватар пользователя realovich realovich 20 января 2012 в 11:40

Уважаемые знатоки! Помогите, пожалуйста, с представлением цены. Цена выводится с копейками в конце, в виде 1 500,00 руб., а хотелось бы избавиться от нулей и запятой, чтобы было так: 1 500 руб. В настройках модуля такой возможности не нашел. Надеюсь на вашу помощь.

Комментарии

Аватар пользователя Andruxa Andruxa 20 января 2012 в 13:36

в своем модуле:

<?php
/**
* Implements hook_commerce_currency_info_alter().
*
*/

function имя_модуля_commerce_currency_info_alter(&$currencies, $langcode) {
  $currencies['RUB']['decimals'] = 0;
}

ACHTUNG!
Все имеющиеся товары подорожают в 100 раз.

Аватар пользователя realovich realovich 20 января 2012 в 14:28

Спасибо за ваше решение, но я нашел более гуманное. Ставим модуль Commerce Extra Price Formatters и в настройках отображения типов товаров в настройке цены указываем Price with no decimal places

Только почему-то этот модуль не хочет дружить с Views. Если указать эту настройку цены в каком-то Views, страница с этим Views вообще не грузится

Аватар пользователя Andruxa Andruxa 20 января 2012 в 14:49

этот модуль не хочет дружить не только со views, но и с Commerce Price Savings Formatter, например
поэтому я его и не предлагал

Аватар пользователя Akinak Akinak 4 апреля 2012 в 0:35

Присоединяюсь к вопросу. Купил тему под commerce на буржуйском сайте (с commerce был до этого не знаком), а тут такой облом. Смешно цена смотрится с копейками. Пробовал это решение http://drupal.org/node/1061330. Но ничего не вышло. Выводит с копейками.

Вот тут нашел по ходу описание что и как он с ценой делает, но так как в php я нуль, то что я «понял», это то (вроде как), что он хранит цену как целое число в базе данных, а при выводе умножает на 100 и отделяет 2 последних знака, почему он игнорирует если изменить в commerce.currency.inc в российских рублях - «'decimal' => 0,» я не допер, и «'minor_unit' => t('Kopek'),» убирал как советуют в первой ссылке которую я привел. Один фиг выводил копейки. Пошел пока другим путем, товаров меньше 100 рублей у меня не предвидится, поэтому в commerce.currency.inc в строках отвечающих за настройку рубля, вместо «'decimal_separator' => ',',» вставил «'decimal_separator' => '',» , короче убрал вообще разделитель десятичный, и если нужно выставить цену 870 рублей, пишу в цене 8,7, commerce умножает это число на сто и в итоге я получаю на странице 870 рублей. Но правда я не пользуюсь платежными шлюзами напрямую, у меня все после созвона или по e-mail, а оплата потом напрямую, какое число он выдаст платежным шлюзам я не знаю.

P.S. а хотя что я туплю про цену ниже 100 рублей, надо 87 выставил - 0,87 , надо 8 рублей выставил 0,08

Аватар пользователя Nick Fedchik Nick Fedchik 27 июля 2012 в 18:16

jmd wrote:
Commerce Extra Price Formatters уже вполне рабочий модуль. Поставил себе, с Views подружился, проблем нет. Юзайте, господа.

Как его настроить?
Хочу сделать фишку со скидками, показывать РРЦ и свою цену. Мануала с модулем нет Sad

Аватар пользователя qvazar qvazar 20 ноября 2013 в 22:52

Господа, воспользовался Commerce Extra Price Formatters, ну все и вся пересмотрел. Выставил в отображении продукта Price with no decimal places, нули после запятой исчезли. Но там нет способа как убрать десятичные нули в КОРЗИНЕ!
Подскажите как же убрать нули в корзине?

Аватар пользователя qvazar qvazar 20 ноября 2013 в 23:49

grob.82 wrote:
Тоже сталкивался с этим, забил.

ну в самой корзине во всюхе можно формат поставить без нулей, но общая цена с нулями остается.
Короче отключил из-за того что доставка и total price остаются с нулями
воспользовался изначально предложенным вариантом

<?php
/**
* Implements hook_commerce_currency_info_alter().
*
*/
function имя_модуля_commerce_currency_info_alter(&$currencies$langcode) {
  
$currencies['RUB']['decimals'] = 0;?>

Andruxa, спасибо!

Аватар пользователя Worth Worth 26 января 2014 в 11:43

Если у вас уже были добавлены товары и они подорожали в 100 раз после применения хука имя_модуля_commerce_currency_info_alter
то используйте следующий код в vbo применительно ко всем товарам на сайте:

<?php
$entity
->commerce_price['und'][0]['amount'] = $entity->commerce_price['und'][0]['amount'] / 100
commerce_product_save($entity);
?>

После этого цена вновь станет нормальной.

Аватар пользователя tarazingo tarazingo 8 февраля 2014 в 19:35

Нашел аналог и замену http://drupal.org/project/commerce_extra_price_formatters]Commerce Extra Price Formatters">Commerce">http://drupal.org/project/commerce_extra_price_formatters]Commerce Extra Price Formatters вот этот модуль https://drupal.org/project/commerce_currency_settings]Commerce Currency Settings">Commerce">https://drupal.org/project/commerce_currency_settings]Commerce Currency Settings + ко всему можно настроить символ валюты, где ставить символ, отступы, какие разделители ставить и вообще все что касается валюты, все настраиваться (примерно те же настройки что есть в Ubercart`е из коробки.) Вот правда копейки он не позволяет ставить 0, минимум 1. (((
Так что все можно реализовать с помощью хука. А если вам копейки не мешают то можно смело использовать модуль.
Если кому нужно поменять символ валюты или убрать пробел между тысячами, вот код

<?php
function имя_модуля_commerce_currency_info_alter(&$currencies$langcode) {
  
$currencies['RUB']['symbol'] = 'Р'/** Символ валюты*/
  
$currencies['RUB']['symbol_spacer'] = ''/** Отступ от символа*/
  
$currencies['RUB']['thousands_separator'] = ''/** Отступ тысячи*/
  
$currencies['RUB']['decimals'] = 0/** Не отображать копейки*/
}
?>
Аватар пользователя svl777 svl777 21 ноября 2014 в 12:44

Спасибо, Andruxa!
Для совсем новичков хотел бы уточнить: код, убирающий копейки, добавляется в файл template.php темы следующим образом


<?php
/**
* Implements hook_commerce_currency_info_alter().
*
*/
function имя_темы_commerce_currency_info_alter(&$currencies$langcode) {
  
$currencies['RUB']['decimals'] = 0;
?>
Аватар пользователя heron77 heron77 14 сентября 2018 в 16:34

Andruxa wrote:

в своем модуле:
<?php
/**

* Implements hook_commerce_currency_info_alter().

*

*/

function имя_модуля_commerce_currency_info_alter(&$currencies, $langcode) {

  $currencies['RUB']['decimals'] = 0;
}

ACHTUNG!

Все имеющиеся товары подорожают в 100 раз.


А потом устанавливаешь модуль payment и копейки возвращаются обратно вместе с уменьшением цены в сто раз. И уже не реагируют на эту конструкцию