Jump to content

Давайте поговорим о знаке рубля.


Recommended Posts

Совсем недавно, одному моему клиенту понадобилось чтобы я сделал знак рубля везде в его ИЕ возле цены, в место Р или руб. Т.к. знак этот не официальный и только совсем недавно признанный и официально утвержденный в РФ, этого знака нету как такового в OS, его нельзя напечатать или вызвать сочетанием определенных клавишь на клавиатуре. Знак рубля на данный момент можно сделать только хаком, т.е. заверстать так чтобы было похоже, но этим не являлось. Добиться этого можно в престе только одним единственным способом, это обернуть вывод названия валюты в тэг, делается это не очень сложно:
 
classes\Tools.php:
 
Находим функцию public static function displayPrice(){}
 
В ней перед строчкой содержащей этот код:
 

$blank = ($c_blank ? ' ' : '');

Вставляем свой код, в итого должно получиться так:
 

$c_char = '<span>'.$c_char.'</span>';		
$blank = ($c_blank ? ' ' : '');

Далее нужно в папке темы отредактировать файл \js\Tools.js:

Находим в нем функцию:  function formatCurrency(){}

В ней перед строчкой с кодом:
 

if (currencyBlank > 0)

Вставляем свой код, должно получиться так:
 

currencySign = '<span>' + currencySign + '</span>';
if (currencyBlank > 0)

Далее в js/Product.js и js/modules/blockcart/ajax-cart.js, а так же везде в сторонних модулях, где тот же смысл, нужно найти код который отвечает за подгрузку цены в реальном времени, например при смене атрибута на карточке товара и поменять .text(...); на .html(..); чтобы подгружались тэги..
 
К примеру в файле Product.js, находим:
 

$('#our_price_display').text(our_price);

И меняем на:
 

$('#our_price_display').html(our_price);

Далее если используйте фильтр blocklayered (фильтр по товарам), то нужно в файле blocklayered.php найти эту строчку с кодом:
 

'unit' => $currency->sign,

И исправить на:
 

'unit' => '<span>'.$currency->sign.'</span>', 

В файле blocklyaered.tpl (может так же находиться в папке шаблона), найти этот код:
 

{$filter.values[0]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'} - 
{$filter.values[1]|escape:html:'UTF-8'}{$filter.unit|escape:html:'UTF-8'}

И исправить на:
 

{$filter.values[0]|escape:html:'UTF-8'}{$filter.unit} - 
{$filter.values[1]|escape:html:'UTF-8'}{$filter.unit}

Все...далее цена везде у нас будет выводиться так:  1500 <span>руб</span>
После этого можно тестить различные хаки в интернете как превратить то что в нутри тэга в знак рубля.

На сайте конечно все будет ок, но вот где будут касяки это в админке!
 
Дело в том что там цена выводиться очень во многих местах, и для всего там свой контроллер и где то там цена с тэгом выводиться будет как текст, т.е. вот так:

post-231092-0-96055400-1406878154_thumb.jpg

Два дня убил и не смог сделать там чтобы тэг там обрабатывался как тэг, а не как текст...
Еще я не проверял но логически думать что в шаблоне писем там где выводится цена, будут тоже глюки.
 
P.S.: Что же касается переделки в знак рубля, то я остановился на этом способе:

http://sassmeister.com/gist/8145219

CSS код в конце файла global.css:

 

.ajax_cart_total span, #layered_price_range span, span.price span, div.price span span, td.price span, #enabled_filters ul li span {
  display: inline-block;
  position: relative;
}

.ajax_cart_total span:before, span.price span:before, div.price span span:before, td.price span:before, #layered_price_range span:before, #enabled_filters ul li span:before {
  display: block;
  content: "–";
  position: absolute;
  top: 0.05em;
}
Edited by Kerm (see edit history)
  • Like 2
Link to comment
Share on other sites

×
×
  • Create New...