Сразу переду к делу.
Оптимизируя сайт под поисковики я проверил новостной пост через сервис
webmaster.yandex.ru/microtest.xml где мне выдали предупреждение что:
ПРЕДУПРЕЖДЕНИЕ: значение "10-марта-2013" в поле datePublished не является корректными значением даты. Дата должна быть в формате ISO 8601
Как мы знаем формат ISO 8601 требует от нас чтобы дата выглядела так 2013-04-10
Решается проблема просто открываем файл core/cms.php
Находим следующие строчки у меня это 2788
// Замена числового обозначения месяца на словесное (склоненное в падеже)
if ($is_full_m){
}else{
}
// Замена чисел 01 02 на 1 2
// Формирование окончательного результата
$result = $d.'-'.$m.'-'.$y;
И заменяем на следующий код
// Замена числового обозначения месяца на словесное (склоненное в падеже)
//if ($is_full_m){
// $m = str_replace($month_int, $month_full_str, $m);
//}else{
// $m = str_replace($month_int, $month_short_str, $m);
//}
// Замена чисел 01 02 на 1 2
//$d = str_replace($day_int, $day_norm, $d);
// Формирование окончательного результата
//$result = $d.'-'.$m.'-'.$y;
$result = $y.'-'.$m.'-'.$d;
Как мы видим ничего сложного, я закомментировал лишнее, что мешает валидатору определить корректно дату и
в строчке
$result = $d.'-'.$m.'-'.$y;
поменял местами $d и $y, в результате получил
$result = $y.'-'.$m.'-'.$d;
Сохраняем, проверяем ваш пост через через сервис
webmaster.yandex.ru/microtest.xml. Все работает отлично.
Это я испробовал на версии 1.10.1 так что за корректную работу на остальных версия ручаться не могу. Но думаю там надо действовать по такому же принципу.
И еще дополнение избавился от слов Сегодня и Вчера которые мешали валидатору.
Закомментировал следующие строчки в в том же файле. У меня это начинается со строки 2742
// Если дата совпадает с сегодняшней
//case $today:
//$result = ''.$_LANG['TODAY'].'';
//if ($is_now_time && $time) {
//list($h, $m, $s) = explode(':', $time);
//$result .= ' '.$_LANG['IN'].' '.$h.':'.$m;
//}
//break;
//Если дата совпадает со вчерашней
//case $yesterday:
//$result = ''.$_LANG['YESTERDAY'].'';
//if ($is_now_time && $time) {
//list($h, $m, $s) = explode(':', $time);
//$result .= ' '.$_LANG['IN'].' '.$h.':'.$m;
//}
//break;