Дата и время в MODX Revo на русском

CMS MODX написана на языке программирования PHP, поэтому для вывода дат используются функции PHP strtotime и strftime. В основном взаимодействие с датами ограничивается параметрами ресурса:

  • createdon — дата создания
  • deletedon — дата удаления
  • editedon — дата редактирования
  • publishedon — дата публикации
  • unpub_date — дата отмены публикации

Примеры:

Пример Вывод
[[*createdon:strtotime:date=`%a %b %e, %Y`]] Fri January 01, 2016
[[*createdon:strtotime:date=`%e %B %Y`]] 01 January 2016
[[*createdon:strtotime:date=`%A, %B %e, %Y`]] Friday, January 01, 2016
[[*createdon:strtotime:date=`%d.%m.%Y`]] 01.01.2016

ВАЖНО! Некоторые сниппеты по-разному обрабатывают дату, к примеру, в шаблонах (плейсхолдерах) pdoResources функция strtotime не нужна, т. е. вывод будет таким:
[[+createdon:date=`%d.%m.%Y`]]
в getResources же — нужна, вызов для getResources будет таким:
[[+createdon:strtotime:date=`%d.%m.%Y`]]

Русский язык и мультиязычность:

В случаях когда требуется выводить русские названия месяцев или дней недели, нужно в настройках системы у ключа под названием locale задать ru_RU.UTF8, соответственно, для нужных языковых контекстов задаем свой, например, для английской версии сайта задаем en_US.UTF8.

Форматирование даты и времени в MODX Revolution

Однако полный месяц даты на русском будет выводиться в именительном падеже, например, «01 Январь 2016», для того, чтобы перевести месяц в родительный падеж «01 Января 2016» можно использовать сниппет:
[[+publishedon:dateRU]]

Сам код сниппета 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.' '.$year;

Если же после форматирования вместо русского формата даты выводится английская, то создайте сниппет setLocale и вставьте код setlocale(LC_ALL, «ru_RU.UTF-8»);. После вставьте этот сниппет в начало шаблона, где нужно выводить форматирование даты. Если русская дата отображается вопросиками, проверьте кодировку сайта, должна быть такой же как и в базе (желательно использовать UTF-8).

Все возможные параметры:

Код Описание Вывод
%a Короткое наименование дня недели Sun
%A Полное наименование дня недели Sunday
%b Короткое наименование месяца Jan
%B Полное наименование месяца January
%c Локальная дата и время сервера Wed Jan 7 00:22:10 2010
%C Век 20
%d День месяца (от 01 до 31) 04
%D Аналогично %m/%d/%y 04/29/10
%e День месяца (от 1 до 31) 3
%H Часы (24-часовые) 00–23
%I (заглавная i) Часы (12-часовые) 01–12
%l (нижний регистр L) Часы (12-часовые) 1–12
%j Номер дня года от 001 до 366
%m Месяц от 01 до 12
%M Минута от 00 до 59
%S Секунды от 00 до 59
%u День недели (Понедельник = 1) от 1 до 7
%w День недели (Воскресенье = 0) от 0 до 6
%x Аналогично %m/%d/%y 01/25/09
%X Аналогично %I:%M:%S 02:58:12
%y Последние две цифры года 09
%Y Год, четырехзначно 2010
%Z или %z Смещение часового пояса или наименование -005 или EST
%% Литерал % %

Свяжитесь с нами

Нажимая на кнопку «Отправить», я даю свое согласие на обработку персональных данных в соответствии с законом №152-ФЗ «О персональных данных» от 27.07.2006 и принимаю условия Пользовательского соглашения