Шанс приходит... ...ждет немного... и уходит!

MODX REVO -Дата на русском...

" alt="" />" />

Форматирование даты, дата на русском в MODX revo

Не так давно столкнулся с проблемой вывод даты в MODX на русском языке. Например, «1 сентября». Оказалось, я не одинок с этой проблемой и, погуглив, обнаружил, что можно решить ее с помощью настроек системы или с помощью внедрения нового сниппета. Каждому из этих способов найдется применение, так что — ближе к делу! Кроме того в статье полезнейшая табличка со всевозможными параметрами для даты и времени!

Для начала немного теории о способах вывода даты. Ее значение берется из следующих полей:

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

Например: 21 June 2014, что будет означать «10 April 2013″.

Теперь переведем название месяца на русский язык. Для этого заходим в «система -> настройки системы», фильтр по разделу — «словарь и язык». Устанавливаем в поле «Локаль» значение ru_RU.UTF-8. Это все — теперь дата будет выглядеть вот таким вот образом: «10 апреля 2013″. Естественно, на русском теперь дни недели и сокращенное название месяца.

Одно время у меня была проблема с настройкой локали, а причина оказалась до безобразия простой — в значении отсутствовал дефис. Причем, эту ошибку я встречал на нескольких сайтах!

Но иногда возникает необходимость выводить необычные названия месяца или, хотя бы, избавиться от родительного падежа. В этом случае поможет простой сниппет, в который мы собственноручно внесем все необходимые значения. Итак, создаем сниппет «dateRus». Его код:

<?php
function returnDate($num, $tipe){
$str;
switch($tipe){
case "month":
$month_name = array("", "Пьянварь", "Фигвраль", "Кошмарт","Сопрель", "Сымай", "Теплюнь", "Жарюль", "Авгрусть", "Свистябрь", "Моктябрь", "Гноябрь", "Дубабрь");
$str = $month_name[floor($num)];
break;
case "day":
$day_name = array("", "Понедельник", "Вторник", "Среда","Четверг", "Пятница", "Суббота", "Воскресенье");
$str = $day_name[floor($num)];
break;
}
return $str;
}
echo date("j") . " " . returnDate(date("n"), "month") . " " . date("Y") . " " . returnDate(date("N"), "day");
?>

Вызов сниппета стандартный — . При использовании этого скрипта имейте ввиду, что он выводит строку «echo» целиком. У меня пока не хватает знаний php, а готовых решений я не нашел, чтобы извлечь из этого кода, например, только название месяца. Но для этого есть более «топорный» выход. Пишем так:

<?php
function returnDate($num, $tipe){
$str;
switch($tipe){
case "month":
$month_name = array("", "Пьянварь", "Фигвраль", "Кошмарт","Сопрель", "Сымай", "Теплюнь", "Жарюль", "Авгрусть", "Свистябрь", "Моктябрь", "Гноябрь", "Дубабрь");
$str = $month_name[floor($num)];
break;
}
return $str;
}
echo returnDate(date("n"), "month");
?>

И напоследок — таблица со всевозможными форматами даты и времени. Добавляйте в закладки!

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

Это все, о чем хотелось сказать в вопросе форматирования дат в MODX. Пишите свои комментарии и замечания. Может еще что-то стоит добавить в статью?

6 Коментариев из “Blog Post 5”

Ваш комментарий


AJAX поиск по сайту
  


 


Flag Counter