Cotonti / Open Source PHP Content Management FrameworkContent Management Framework

Отображение дат и времени в различных форматах

Документация / Инструкции и типовые решения / Отображение дат и времени в различных форматах

Вызов функции `cot_date()` из шаблонов

#1. Вывод дат в шаблонах

По умолчанию формат отображения дат и времени внутри Cotonti уже настроен. В большинстве случаев этого будет достаточно. Тем не менее, у вас есть возможность изменить формат вывода. Сделать это можно двумя способами: 

  1. настроить формат вывода конкретного элемента в шаблоне;
  2. настроить (изменить) формат отображения глобально для всей системы.

Рассмотрим сначала первый вариант — вам необходимо изменить формат вывода даты в определенном [месте] шаблоне.

Как правило все метки даты-времени внутри системы храняться в формате UNIX-времени (по сути счетчик количества секунд прошедших с  1 января 1970 года). Это удобный для внутреннего хранения и сравнения формат, который позволяет быстро и удобно вывести дату в нужном, человеко-читаемом формате. Для конвертирования такоей метки даты-времени в читаемый формат в PHP существует функция date(), однако она не учитывает язык конечного пользователя.

Для решения этой проблемы в Cotonti есть функция «обертка» cot_date()Перейдем теперь к примеру. Предположим мы имеем какой-либо тег содержащий метку времени, например — PAGE_ROW_DATE_STAMP. Используем cot_date() как обратный вызов (из шаблона):

{PAGE_ROW_DATE_STAMP|cot_date('d-m-Y', $this)}

Передаем значение PAGE_ROW_DATE_STAMP в функцию и предполагаем вывод в формате `d-m-Y` (для понимания сокращений в формате смотри описание функции date()).

Замечание: Функция принимает 3 параметра: первый (обязательный параметрзадает строку формата, второй — метку времени, третий — использовать ли временную зону пользователя.

Кроме возможности указать формат в ручную, в системе есть ряд предопределенных заранее форматов. Эти форматы определены на уровне системных языковых файлов (main.*.lang.php) и поэтому могут учитывать некоторые национальные особенности отображания дат для того или иного языка. Хранятся эти определения в массиве $Ldt. При проектировании своих расширений рекомендуется использовать именно эти готовые форматы.  Например:

{PAGE_ROW_DATE_STAMP|cot_date('date_full', $this)}

Ниже приведен список всех предопределенных форматов (примеры даны для руcского RU языкового файла):

Name Format Example
date_full d.m.Y 13.02.2009
date_medium m.Y 02.2009
date_short d.m 13.02
date_text d F Y 13 февраля 2009
date_fulltext l, d F Y Пятница, 13 февраля 2009
time_full H:i:s 23:31:30
time_medium G:i 23:31
time_short i:s 31:30
time_text g:i A 11:31 PM
time_fulltext g:i:s A 11:31:30 PM
datetime_full d.m.Y H:i:s 13.02.2009 23:31:30
datetime_medium d.m.Y H:i 13.02.2009 23:31
datetime_short d.m H:i 13.02 23:31
datetime_text d F Y H:i 13 февраля 2009 23:31
datetime_fulltext l, d F Y H:i Пятница, 13 февраля 2009 23:31
week_full o-\WW 2009-W07 *
week_medium \WW W07
week_short \WW-N W07-5
week_text \WW, l W07, Пятница
week_fulltext o-\WW, l 2009-W07, Пятница

* если номер недели (ISO) относится к предыдущему или следующему году — будет отображен соотв. год.

Второй упомянутый вариант — это возможность глобально изменить формат, переопределив соответствующий элемент массива $Ldt.

Более подробно с информацией о форматах даты/времени можно ознакомится в документации к PHP.

 



1. Twiebie  12.10.2011 13:56

Thanks: 0

Very useful information, thanks!

2. JIabs  21.10.2011 15:48

Thanks: 0

Cool, but i think it will be better if admin of site can overwrite these formats by his custom theme|language file, because of update. Is it possible?

(sorry for my english)

3. Trustmaster  10.11.2011 17:31

Thanks: 0

It is possible, you can overwrite it in your theme language strings.

Всего: 3, на странице: 3

Добавление комментариев доступно только зарегистрированным пользователям