По умолчанию формат отображения дат и времени внутри Cotonti уже настроен. В большинстве случаев этого будет достаточно. Тем не менее, у вас есть возможность изменить формат вывода. Сделать это можно двумя способами:
Рассмотрим сначала первый вариант — вам необходимо изменить формат вывода даты в определенном [месте] шаблоне.
Как правило все метки даты-времени внутри системы храняться в формате 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.
74 раза
Very useful information, thanks!
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)
265 раз
It is possible, you can overwrite it in your theme language strings.
16 раз
по этим форматам дат понятно, а вывести в разметку такого формата?
276 раз
{PAGE_ROW_DATE_STAMP|cot_date('Y-m-dTH:i:s', $this)}Как то так. Смотрите https://www.php.net/manual/ru/datetime.format.php