сайтов
MODX написана на языке программирования PHP, поэтому для вывода дат используются функции PHP strtotime и strftime. В основном взаимодействие с датами ограничивается следующими стандартными полями ресурса (createdon, publishedon, editedon и т.д.)
В основном взаимодействие с датами ограничивается следующими стандартными полями ресурса:
Помимо стандартных полей можно создать TV-поле с типом ввода дата.
Пример | Вывод |
[[*createdon:strtotime:date=`%a %b %e, %Y`]] | Fri Jan. 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.
Однако полный месяц даты на русском будет выводиться в именительном падеже, например, "01 Январь 2018", для того, чтобы перевести месяц в родительный падеж "01 Января 2016" можно использовать сниппет: [[+publishedon:dateRU]]
Сам код сниппета dateRU:
<?php
$month_arr = array(
'01' => 'Января',
'02' => 'Февраля',
'03' => 'Марта',
'04' => 'Апреля',
'05' => 'Мая',
'06' => 'Июня',
'07' => 'Июля',
'08' => 'Августа',
'09' => 'Сентября',
'10' => 'Октября',
'11' => 'Ноября',
'12' => 'Декабря'
);
$d = $input;
$month = strftime("%m",$d);
$year = strftime("%Y",$d);
$day = strftime("%d",$d);
$month = $month_arr[$month];
return "$day $month $year";
?>
Если же после форматирования вместо русского формата даты выводится английская, то создайте сниппет setLocale и вставьте код:
<?php
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 | Часы ( |
00–23 |
%I (заглавная i) | Часы ( |
01–12 |
%l (нижний регистр L) | Часы ( |
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 |
%% | Литерал % | % |