Микроразметка. Дата должны быть в формате ISO 8601

Предлагаю решение проблемы

 
Посетитель
no avatar
Сообщений: 2
Сразу переду к делу.

Оптимизируя сайт под поисковики я проверил новостной пост через сервис http://webmaster.yandex.ru/microtest.xml где мне выдали предупреждение что:
Валидатор микроразметки:
ПРЕДУПРЕЖДЕНИЕ: значение "10-марта-2013" в поле datePublished не является корректными значением даты. Дата должна быть в формате ISO 8601

Как мы знаем формат ISO 8601 требует от нас чтобы дата выглядела так 2013-04-10

Решается проблема просто открываем файл core/cms.php

Находим следующие строчки у меня это 2788
Код PHP:
  1. // Замена числового обозначения месяца на словесное (склоненное в падеже)
  2. if ($is_full_m){
  3. $m = str_replace($month_int, $month_full_str, $m);
  4. }else{
  5. $m = str_replace($month_int, $month_short_str, $m);
  6. }
  7. // Замена чисел 01 02 на 1 2
  8. $d = str_replace($day_int, $day_norm, $d);
  9. // Формирование окончательного результата
  10. $result = $d.'-'.$m.'-'.$y;
И заменяем на следующий код
Код PHP:
  1. // Замена числового обозначения месяца на словесное (склоненное в падеже)
  2. //if ($is_full_m){
  3. // $m = str_replace($month_int, $month_full_str, $m);
  4. //}else{
  5. // $m = str_replace($month_int, $month_short_str, $m);
  6. //}
  7. // Замена чисел 01 02 на 1 2
  8. //$d = str_replace($day_int, $day_norm, $d);
  9. // Формирование окончательного результата
  10. //$result = $d.'-'.$m.'-'.$y;
  11. $result = $y.'-'.$m.'-'.$d;
Как мы видим ничего сложного, я закомментировал лишнее, что мешает валидатору определить корректно дату и
в строчке
Код PHP:
  1. $result = $d.'-'.$m.'-'.$y;
поменял местами $d и $y, в результате получил
Код PHP:
  1. $result = $y.'-'.$m.'-'.$d;
Сохраняем, проверяем ваш пост через через сервис http://webmaster.yandex.ru/microtest.xml. Все работает отлично.

Это я испробовал на версии 1.10.1 так что за корректную работу на остальных версия ручаться не могу. Но думаю там надо действовать по такому же принципу.

И еще дополнение избавился от слов Сегодня и Вчера которые мешали валидатору.
Закомментировал следующие строчки в в том же файле. У меня это начинается со строки 2742
Код PHP:
  1. // Если дата совпадает с сегодняшней
  2. //case $today:
  3. //$result = ''.$_LANG['TODAY'].'';
  4. //if ($is_now_time && $time) {
  5. //list($h, $m, $s) = explode(':', $time);
  6. //$result .= ' '.$_LANG['IN'].' '.$h.':'.$m;
  7. //}
  8. //break;
  9. //Если дата совпадает со вчерашней
  10. //case $yesterday:
  11. //$result = ''.$_LANG['YESTERDAY'].'';
  12. //if ($is_now_time && $time) {
  13. //list($h, $m, $s) = explode(':', $time);
  14. //$result .= ' '.$_LANG['IN'].' '.$h.':'.$m;
  15. //}
  16. //break;
Редактировалось: 2 раз (Последний: 12 марта 2013 в 12:45)
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 787
Не понимаю о чем вы пишите (не касался этой темы), но + для блога поставлю.
Реклама
cms
Посетитель
no avatar
Сообщений: 2
SpideR-KOSS:

Не понимаю о чем вы пишите (не касался этой темы), но + для блога поставлю.

Для блогов и новостей я сделал разметку Schema.
Валидатор микроразметки позволяет проверить семантическую разметку, внедренную на вашем сайте, и убедиться в том, что роботы поисковых систем cмогут извлечь структурированные данные.

И я еще дополнил тему. Избавился от слов Сегодня и Вчера.
Посетитель
small user social cms
Сообщений: 38
Хорошая тема!
А может кто нибудь подсказать, есть ли теги для даты регистрации и последнего посещения пользователем?
Тоесть:
itemscope itemtype="http://schema.org/Person"
itemprop="???"
Посетитель
small user social cms
Медаль
Сообщений: 522
Эльдар, Сделал как тут описано, но при проверке в яндексе выдает ошибку формата даты. версия 10.3
ПРЕДУПРЕЖДЕНИЕ: значение "" в поле datePublished не является корректными значением даты. Дата должна быть в формате ISO 8601
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1343
Для этого не нужно править cms.php. В этом случае даты изменятся на всем сайте.
Достаточно в шаблоне вместо {$article.fpubdate} использовать {$article.pubdate} - это поле содержит дату уже в ISO 8601. Аналогично и с блогами.
Посетитель
small user social cms
Медаль
Сообщений: 187
r2:

Для этого не нужно править cms.php. В этом случае даты изменятся на всем сайте.
Достаточно в шаблоне вместо {$article.fpubdate} использовать {$article.pubdate} - это поле содержит дату уже в ISO 8601. Аналогично и с блогами.

Код PHP:
  1. $article['pubdate'] = cmsCore::dateFormat($article['pubdate']);
не даёт сделать так, как вы говорите.
Посетитель
small user social cms
Медаль
Сообщений: 140
r2:
Достаточно в шаблоне вместо {$article.fpubdate} использовать {$article.pubdate} - это поле содержит дату уже в ISO 8601.
R2. добрый день. О каком шаблоне идет речь? В com_content_read стоит {$article.pubdate}, но результат не удовлетворяет яндекс
Посетитель
small user social cms
Медаль
Сообщений: 140
Разобрался. Действительно - хакать ничего не нужно. Достаточно в шаблоне, например, com_content_read.tpl поставить следующую конструкцию
Код PHP:
  1. {$article.pubdate|date_format:"%Y-%m-%d"}
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.