Проблемы микроразметки.

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #1 Vitaly » 23.09.2016, 09:03

Раньше как-то не проверял, но микроразметка в карточке товара не проходит валидацию.
Свойство price не должно содержать пробелов. То бишь значение "1 234" недопустимое.
Если в файле product.tpl поменять строку
<span class="fn-price" itemprop="price" content="{$product->variant->price|convert}">{$product->variant->price|convert}</span>
на
<span class="fn-price" itemprop="price" content="{$product->variant->price|convert|strip:''}">{$product->variant->price|convert}</span>

а так-же
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
на
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'|strip:''}{literal}",
То проблема исчезает.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #2 korshunov » 23.09.2016, 17:12

1. Ужас как сложно.
2. Предполагается, что в цене могут быть, кроме цифр, только посторонние символы пробела и запятой. Если же кто-то захочет использовать другие разделители, то получит дополнительные трудности.

В то же время есть простой легкий способ:
{$product->variant->price|convert:'':false}

Добавлено спустя 8 минут 37 секунд:
Обнаружился еще интересный момент. Админка позволяет установить для отображения цен запятую как разделитель копеек и одновременно как разделитель тысяч. При такой установке цена товара 11256 руб 46 коп будет показываться как
11,256,46. В связи с этим:
1. Способ из первого поста в этом случае даст полное безобразие,
2. Плохо, что админка такое позволяет - надо бы разработчикам поправить,
3. В разделители надо бы разрешать побольше символов, или даже любые (например, одиночную кавычку надо точно разрешать).

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #3 Vitaly » 23.09.2016, 18:20

korshunov писал(а):В то же время есть простой легкий способ:
{$product->variant->price|convert:'':false}
Спасибо, буду использовать ваш способ.

m1hasik M
Аватара
m1hasik M
Возраст: 32
Репутация: 31
Сообщения: 200
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Откуда: Днепр
Skype

Сообщение #4 m1hasik » 26.09.2016, 16:30

korshunov писал(а):1. Ужас как сложно.
2. Предполагается, что в цене могут быть, кроме цифр, только посторонние символы пробела и запятой. Если же кто-то захочет использовать другие разделители, то получит дополнительные трудности.

В то же время есть простой легкий способ:
{$product->variant->price|convert:'':false}


Обнаружился еще интересный момент. Админка позволяет установить для отображения цен запятую как разделитель копеек и одновременно как разделитель тысяч. При такой установке цена товара 11256 руб 46 коп будет показываться как
11,256,46. В связи с этим:
1. Способ из первого поста в этом случае даст полное безобразие,
2. Плохо, что админка такое позволяет - надо бы разработчикам поправить,
3. В разделители надо бы разрешать побольше символов, или даже любые (например, одиночную кавычку надо точно разрешать).
Чисто технический интерес, а зачем одинарная кавычка? я просто на сайтах не встречал еще такие цены, реально используют ?

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #5 Vitaly » 26.09.2016, 17:35

korshunov писал(а):11,256,46. В связи с этим:
1. Способ из первого поста в этом случае даст полное безобразие
Я бы сказал так, способ из первого поста никак на это безобразие не повлияет. Добавленный в строку модификатор strip:'' убирает только пробел.
m1hasik писал(а):Чисто технический интерес, а зачем одинарная кавычка? я просто на сайтах не встречал еще такие цены, реально используют ?
Немцы иногда любят поставить такой разделитель, в наших магазинах я тоже такого не видел.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #6 korshunov » 27.09.2016, 06:53

Vitaly писал(а):Я бы сказал так, способ из первого поста никак на это безобразие не повлияет. Добавленный в строку модификатор strip:'' убирает только пробел.

В первом посте ДВА способа.
И во втором способе еще есть замена запятой на точку. А это уже влияет, да еще как...

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #7 Vitaly » 27.09.2016, 09:08

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

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #8 korshunov » 27.09.2016, 10:45

Спасибо за замечание, исправляюсь:

1. Для некоторых настроек разделителей валют (запятая как разделитель копеек и одновременно как разделитель тысяч), при стандартном выводе цена товара может быть показана как 11.256.46 (с двумя точками), что совершенно неправильно и недопустимо.
2. Если в этом случае применить способ из из первого поста, то ничего не изменится, цена будет показана такой же неправильной.
3. Сам способ из первого поста принципиально неверный:
3.1 он работает только для разделителей по умолчанию,
3.2 он чрезмерно сложный, так как сначала получает форматированный вывод цены, а потом из полученного удаляет некоторые символы. И эта кустарщина, естественно, порождает ошибки,
3.3 в то же время требуется получить лишь число цены, что можно сделать простыми стандартными средствами, указанными во втором посте.
4. Принципиально неверный также способ от разработчиков Okay в строке
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
по причинам, аналогичным 3.1-3.3. Он работает правильно лишь при стандартных разделителях и маленьких ценах.

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #9 Vitaly » 27.09.2016, 11:57

korshunov писал(а):Принципиально неверный также способ от разработчиков Okay в строке
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
по причинам, аналогичным 3.1-3.3. Он работает правильно лишь при стандартных разделителях и маленьких ценах.
Хех) Опять вы людей вводите в заблуждение, способ по дефолту не сработал со стандартным разделителем (пробелом), потому я в него и добавил модификатор вырезающий этот пробел. Моя проблема исчезла, о чем я собственно и сообщил тут, никаких новых решений я не изобретал. Цель топика - сообщить о проблеме в нормальной для меня форме, без вычурных эпитетов в сторону разработчиков, пусть они решают, что с этим делать дальше.

Я конечно приветствую вас как борца за эстетику и универсальность решений, но тон в ваших сообщениях мягко говоря неприятный. В частности и к разработчикам движка. Советы дельные, но читать написанные в такой манере сообщения противно. Вы пользуетесь этой "кустарщиной" и зарабатываете с её помощью деньги, так откуда такое неуважение ко всем вокруг?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #10 korshunov » 27.09.2016, 13:08

Vitaly писал(а):Опять вы людей вводите в заблуждение, способ по дефолту не сработал со стандартным разделителем (пробелом), потому я в него и добавил модификатор вырезающий этот пробел.

Можете ТОЧНО сказать, чем именно я ввожу в заблуждение людей?

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #11 Vitaly » 27.09.2016, 13:42

korshunov писал(а):Можете ТОЧНО сказать, чем именно я ввожу в заблуждение людей?
Перечитайте вдумчиво сообщения в этой теме за сегодня, постарайтесь осмыслить.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #12 korshunov » 27.09.2016, 14:39

Vitaly писал(а):Перечитайте вдумчиво сообщения в этой теме за сегодня, постарайтесь осмыслить.

Если знаете, то ответьте на простой вопрос КОНКРЕТНО и ТОЧНО. А ничего не значащие общие фразы тут ни к чему...

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #13 Vitaly » 27.09.2016, 15:21

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

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #14 korshunov » 27.09.2016, 17:46

Конечно, не обязан.

Но если заявляете "Опять вы людей вводите в заблуждение", и не можете или не хотите внятно сказать, чем именно, а вместо этого разводите флуд типа "уже всё написал", " эта тема уже себя исчерпала", то выглядит с Вашей стороны некрасиво - за свои слова не отвечаете и увиливаете от прямого ответа...

Vitaly
Аватара
Vitaly
Репутация: 20
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 7 лет 7 месяцев

Сообщение #15 Vitaly » 27.09.2016, 18:47

korshunov писал(а):за свои слова не отвечаете и увиливаете от прямого ответа...
Не вижу смысла писать снова и снова ответ, что был уже написан ранее. Я не знаю какими другими словами вам еще объяснять нужно, да и есть у меня список более полезных дел, чем удовлетворять вашу потребность в бессмысленных спорах. Мне этот негатив при общении с вами не нужен, и я воспользуюсь правом от него "увиливать", пусть он остаётся при вас.
Если сильно требуется оставить последнее слово в теме, то пожалуйста.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #16 korshunov » 28.09.2016, 06:29

Vitaly писал(а):Я не знаю какими другими словами вам еще объяснять нужно

Объяснять надо ТОЧНЫМИ словами.

Вы написали "Опять вы людей вводите в заблуждение" в ответ на мой пост, где я признал Ваше предыдущее замечание и написал исправленный вариант, где для дальнейшего удобства Ваших замечаний написал свои соображения в виде нумерованного списка. Сделано было для того, чтобы Вы могли написать кратно и четко "вводите в заблуждение в пункте номер ТАКОЙ-ТО". Вы же вместо краткого ответа по делу предпринимаете попытки отклониться в сторону: на общие фразы типа " я уже сказал", на обсуждение не понравившегося Вам тона и пр. Могу только предположить, что Вы окончательно запутались и Вам нечего сказать по сути...


Название раздела: Предложения по улучшению OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Предложения по улучшению OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 11 гостей