@Zabolots

Микроразметка schema.org — как правильно вставить пробел, отделяющий тысячи, в цену?

На сайте, для удобства восприятия, цены выводятся с неразрывным пробелом, отделяющим тысячи (пример: 10 000). Вопрос в том, на сколько приемлемо такое указание цены с точки зрения микроразметки Schema.org? На сколько понимаю, не должно быть не только  , но и пробела вообще (во всяком случае в lowPrice ругался у меня Google на пробел). А как быть? Как временное решение я сейчас с помощью javascript вставляю пробел на страницу (то есть в html пробела нет), но мне самому такой вариант не нравится. Может, с помощью CSS можно отформатировать число, отделив тысячи?
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
Так ведь вы можете совершенно спокойно указывать эти данные в метатегах, например
<meta itemprop="lowPrice" content="7500">
<meta itemprop="highPrice" content="9000"/>

и вся инфа будет подхватываться отсюда, и не нужно будет что то с форматированием выдумывать при выводе на сайте.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Exploding
@Exploding
wtf?
Для технических целей (парсеры/...уярсеры) - никаких пробелов быть не должно!
Для форматирования используйте php функцию:
number_format($price, 2, ',', ' '))
где 2 - кол-во цифр после запятой
"," - разделитель целой и дробной части
" " - разделитель разрядов.
Типа такого получится: 10 000,00

Для тех. целей я использую атрибут data:
<div data-price="10000">10 000,00</div>
Т.к. если парсить innerHTML функция parseInt вернет 10, а не 10000!

Для JS вот функция.
function number_format( number, decimals, dec_point, thousands_sep ) 
{	

	var i, j, kw, kd, km;
	if( isNaN(decimals = Math.abs(decimals)) ){
		decimals = 2;
	}
	if( dec_point == undefined ){
		dec_point = ",";
	}
	if( thousands_sep == undefined ){
		thousands_sep = ".";
	}

	i = parseInt(number = (+number || 0).toFixed(decimals)) + "";

	if( (j = i.length) > 3 ){
		j = j % 3;
	} else{
		j = 0;
	}

	km = (j ? i.substr(0, j) + thousands_sep : "");
	kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
	kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");

	return km + kw + kd;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы