Вывод дат в MODX Revolution

У ресурса в MODX Revolution есть несколько дат для отображения их на сайте:

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

Для вывода дат на странице можно использовать стандартные модификаторы и модификаторы fenom

Стандартные модификаторы

Модификатор Результат
[[*createdon:strtotime:date=`%a %b %e, %Y`]] Вс дек 15, 2019
[[*createdon:strtotime:date=`%e %B %Y`]] 15 Декабрь 2019
[[*createdon:strtotime:date=`%A, %B %e, %Y`]] Воскресенье, Декабрь 15, 2019
[[*createdon:strtotime:date=`%d.%m.%Y`]] 15.12.2019

Вывод даты в шаблоне pdoResources осуществляется без модификатора strtotime

[[*createdon:strtotime:date=`%a %b %e, %Y`]]

При стандартный настройках MOX выводит название дней недели и месяцев на английском языке. Для руссификации добавляем в ситемных настройках русскую локаль, ключу locale присваиваем значение ru_RU.UTF-8

Полное название месяца выводится в именительном падеже, для родительного падежа напишем свой сниппет назвем его rusDate

$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 = $arr[$month];

return "$day $month $year";

Вызов сниппета:

[[+createdon:rusDate]]

Возможные параметры для вывода дат:

Код Описание Вывод
%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
%% Литерал % %

Модификаторы Fenom

Модификатор Результат
{$_modx->resource.publishedon | date_format : "%a %b %e, %Y"} Вс дек 15, 2019
{$_modx->resource.publishedon | date_format : "%e %B %Y"} 15 Декабрь 2019
{$_modx->resource.publishedon | date_format : "%A, %B %e, %Y"} Воскресенье, Декабрь 15, 2019
{$_modx->resource.publishedon | date_format : "%d.%m.%Y"} 15.12.2019

Вывод даты в шаблоне pdoResources

{$publishedon | date_format :  "%a %b %e, %Y"}

Так же возможно вывод даты чере функцию date

{$_modx->resource.publishedon | date : "d.m.Y"}

Возможные параметры для вывода дат:

Символ Описание Пример возвращаемого значения
День --- ---
d День месяца, 2 цифры с ведущим нулём от 01 до 31
D Текстовое представление дня недели, 3 символа от Mon до Sun
j День месяца без ведущего нуля от 1 до 31
l (строчная 'L') Полное наименование дня недели от Sunday до Saturday
N Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлено в PHP 5.1.0) от 1 (понедельник) до 7 (воскресенье)
S Английский суффикс порядкового числительного дня месяца, 2 символа st, nd, rd или th. Применяется совместно с j
w Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Неделя --- ---
W Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника Например: 42 (42-я неделя года)
Месяц --- ---
F Полное наименование месяца, например, January или March от January до December
m Порядковый номер месяца с ведущим нулём от 01 до 12
M Сокращенное наименование месяца, 3 символа от Jan до Dec
n Порядковый номер месяца без ведущего нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год --- ---
L Признак високосного года 1, если год високосный, иначе 0.
o Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлено в PHP 5.1.0) Примеры: 1999 или 2003
Y Порядковый номер года, 4 цифры Примеры: 1999, 2003
y Номер года, 2 цифры Примеры: 99, 03
Время --- ---
a Ante meridiem (лат. "до полудня") или Post meridiem (лат. "после полудня") в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
B Время в формате Интернет-времени (альтернативной системы отсчета времени суток) от 000 до 999
g Часы в 12-часовом формате без ведущего нуля от 1 до 12
G Часы в 24-часовом формате без ведущего нуля от 0 до 23
h Часы в 12-часовом формате с ведущим нулём от 01 до 12
H Часы в 24-часовом формате с ведущим нулём от 00 до 23
i Минуты с ведущим нулём от 00 до 59
s Секунды с ведущим нулём от 00 до 59
u Микросекунды (добавлено в PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000, т.к. она принимает целочисленный параметр, тогда как DateTime::format() поддерживает микросекунды, если DateTime создан с ними. Например: 654321
v Миллисекунды (добавлено в PHP 7.0.0). Замечание такое же как и для u. Пример: 654
Временная зона --- ---
e Идентификатор временной зоны (добавлено в PHP 5.1.0) Примеры: UTC, GMT, Atlantic/Azores
I (заглавная i) Признак летнего времени 1, если дата соответствует летнему времени, 0 в противном случае.
O Разница с временем по Гринвичу без двоеточия между часами и минутами Например: +0200
P Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в PHP 5.1.3) Например: +02:00
T Аббревиатура временной зоны Примеры: EST, MDT ...
Z Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC - положительные. от -43200 до 50400
Полная дата/время --- ---
c Дата в формате стандарта ISO 8601 (добавлено в PHP 5) 2004-02-12T15:19:21+00:00
r Дата в формате » RFC 2822 Например: Thu, 21 Dec 2000 16:01:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (1 января 1970 00:00:00 GMT) См. также time()