Форматирование даты в MODx Revo
Многие не знают, что в MODX Revolution можно очень просто форматировать даты и выводить их на русском языке.
Выводим день, месяц прописью и год.
[[+publishedon:strtotime:date=`%d %b %Y`]]
//30 Apr 2012
Для появления русского языка в начале шаблона нужно вызвать сниппет setLocale:
<?php
setlocale(LC_ALL, "ru_RU.UTF-8");
Есть еще вариант указать эту же локаль в системных параметрах, но бывают рэндомные искажения дат в админке потом. Лично у меня — нормально работает.
Проверяем:
[[+publishedon:strtotime:date=`%d %b %Yг.`]]
//30 Aпр 2012г.
Кстати, все функции использующие локали начнут понимать по-русски. Если вам нужно установить локаль только для функций времени, то используйте не LC_ALL, а LC_TIME.
Установка локали может не работать на криво настроенных хостингах, где просто отсутствует русская локаль — тогда месяц так и будет выводиться на английском. Все равно у вас остается возможность сделать вот так:
[[+publishedon:strtotime:date=`%d.%m.%Yг.`]]
//30.04.2012г.
Если очень нужно вывести месяц на русском, но хостинг — вредина, то используйте вот этот сниппет dateRU.
<?php
$month_arr = array('01' => 'Янв',
'02' => 'Фев',
'03' => 'Мар',
'04' => 'Апр',
'05' => 'Мая',
'06' => 'Июн',
'07' => 'Июл',
'08' => 'Авг',
'09' => 'Сен',
'10' => 'Окт',
'11' => 'Ноя',
'12' => 'Дек'
);
$time = strtotime($input);
$month = strftime('%m', $time);
$day = strftime('%d', $time);
$year = strftime('%Y', $time);
return "$day $month_arr[$month] $year";
Вызывать вот так:
[[+publishedon:dateRU]]г.
//30 Апр 2012г.