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

Форматирование дат и времени в modx MODX Revo

Выводятся даты в MODX Revo при помощи модификаторов phx аналогично функции PHP strftime. В основном взаимодействие с датами и временем ограничивается этими полями ресурса:

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

Типичные примеры

Параметры phx Вывод на страницу
[[*createdon:strtotime:date=`%a %b %e, %Y`]]
Thu Apr 14, 2012
[[*createdon:strtotime:date=`%e %B %Y`]]
18 April 2012
[[*createdon:strtotime:date=`%A, %B %e, %Y`]]
Monday, April 18, 2012
[[*createdon:strtotime:date=`%d.%m.%Y`]]
18.04.2012

Примеры вывода дат на Fenom

MODX хранит данные в формате Timestamp, и для вывода их в человеческом виде, лучше использовать Fenom, например так:

{$publishedon | date : "d.m.Y"}

В зависимости от места место вывода, выводы будут отличаться.

1. Вывод непосредственно в шаблоне, будет выглядеть так: {$_modx->resource.editedon | date : "d.m.Y"}

2. В чанке, сниппете, так: {$editedon | date : "d/m/Y"}

Чтобы настроить нужный формат вывода даты, используем дополнительный параметр, где указываем что и как выводить.
"d/m/Y" -> 12/02/2017
"d.m.Y" -> 12.02.2017
"d.m.Y H:i:s" -> 12.02.2017 17:30:12

Больше параметров в таблице ниже.

Часто используемое

Вывод текущей даты: {'' | date :"d.m.Y"}

Вывод текущего года: {'' | date :"Y"} — обычно используют в копирайте.

Вывод даты публикации в ресурсе: {$_modx->resource.publishedon | date : "d.m.Y"}, в чанке, сниппете: {$publishedon | date : "d/m/Y"}

Fenom модификатор date_format

Данный модификатор форматирует дату согласно указанному формату strftime(). Даты могут быть переданы в виде временных меток unix, временных меток mysql или в виде любой строки, содержащей день, месяц и год, которую может обработать функция strftime().

{$date|date_format:$format = `%b %e, %Y`}

Формат по умолчанию: %b %e, %Y.

{var $ts = time()}

{$ts|date_format:"%Y/%m/%d %H:%M:%S"} выведет 2022/02/08 21:01:43
{$ts|date_format:"-1 day"} выведет вчерашний день, например 2022/02/07 21:01:43

{var $date = "2022-12-08"}

{$ts|date_format:"%Y/%m/%d %H:%M:%S"} выведет 2022/12/08 00:00:00

{'2015-01-10 12:45' | date_format : '%d.%m.%Y'} // 10.01.2015

{'' | date_format : '%Y'} // текущий год

Fenom модификатор date

Модификатор date — форматирует даты через функцию date. Если переменная пуста, будет получено текущее время.

{'2015-01-10 12:45' | date : 'd.m.Y'} // 10.01.2015
{'' | date : 'Y'} // текущий год

для получения даты +1 день используется формат согласно strftime()

{'+1 days' | date : 'Y-m-d'} // завтра

Мультиязычность — дата в MODx на русском

В случаях когда требуется выводить русские названия месяцев или дней недели, многие дилентанты — пишут сниппет, который перебирает из массива название англоязычного по ключу и переводят в рус формат. На самом деле делается это много проще: в настройках системы есть ключик под названием locale, ну соответственно для нужных контекстов просто задаем ru_RU.UTF-8 или для английской версии сайта en_US.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 ) 15
%I ( от i ) Часы ( 12-часовые, формат от 01 до 12 ) 09
%l ( от L ) Часы ( 12-часовые, формат от 1 до 12 ) 5
%j День года по счету ( формат от 001 до 366 ) 234
%m Месяц в году по счету ( формат от 01 до 12 ) 3
%M Минута ( формат от 00 до 59 ) 43
%n Перенос строки \n
%p am или pm am или pm
%P AM или PM AM или PM
%r Аналогично %I:%M:%S %p 08:23:11 PM
%R Аналогично %H:%M 23:11
%S Секунды ( формат от 00 до 59 ) 25
%t Табуляция \t
%T Аналогично %H:%M:%S 26:12:27
%u День недели ( Понедельник = 1, формат 1 до 7 ) 3
%w День недели ( Воскресенье = 0, формат 0 до 6 ) 3
%x Аналогично %m/%d/%y 01/25/09
%X Аналогично %I:%M:%S 02:58:12
%y Год, последние две цифры 12
%Y Год, четырех значно 2012
%Z или %z Смещение часового пояса или наименование -005 или EST
%% Литерал % %
Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 4 оценки, среднее 4 из 5 )
Web-Revenue.ru
Добавить комментарий