По умолчанию формат отображения дат и времени внутри 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 раз
по этим форматам дат понятно, а вывести в разметку такого формата?
Поблагодарили: 265 раз
Как то так. Смотрите https://www.php.net/manual/ru/datetime.format.php