Форматирование дат и времени в Cotonti
В Cotonti даты и время по умолчанию отображаются в удобном для большинства случаев виде. Однако очень часто требуется изменить представление даты/времени под конкретный дизайн, локальные традиции или требования проекта.
Существует два основных подхода:
- Локальное форматирование — прямо в нужном месте шаблона (самый распространённый и гибкий способ)
- Глобальное изменение формата — через языковые файлы (рекомендуется только при необходимости унифицировать формат по всему сайту)
1. Локальное форматирование в шаблонах (рекомендуемый способ)
Внутри системы практически все метки даты хранятся в виде Unix Timestamp (целое число — количество секунд с 1 января 1970 года).
Для вывода такого значения в читаемом виде используется специальная функция-обёртка:
text
cot_date( $format, $timestamp, $usertimezone = true )
- $format — строка формата (либо произвольная как в date(), либо ключевое слово из предопределённого набора $Ldt)
- $timestamp — метка времени (обычно передаётся через $this)
- $usertimezone — учитывать ли личную временную зону пользователя (по умолчанию true)
Примеры использования в шаблонах
smarty
{PAGE_ROW_DATE_STAMP|cot_date('d.m.Y', $this)} → 28.02.2026
{PAGE_ROW_DATE_STAMP|cot_date('date_full', $this)} → 28.02.2026
{PAGE_ROW_DATE_STAMP|cot_date('date_text', $this)} → 28 февраля 2026
{PAGE_ROW_DATE_STAMP|cot_date('datetime_medium', $this)} → 28.02.2026 14:35
{PAGE_ROW_DATE_STAMP|cot_date('l, j F Y H:i', $this)} → Суббота, 28 февраля 2026 14:35
{PAGE_ROW_DATE_STAMP|cot_date('c', $this)} → 2026-02-28T14:35:22+03:00
{PAGE_ROW_DATE_STAMP|cot_date('r', $this)} → Sat, 28 Feb 2026 14:35:22 +0300
Очень популярный современный формат (ISO-подобный, часто используется в атрибутах datetime)
smarty
<time datetime="{PAGE_ROW_DATE_STAMP|cot_date('c', $this)}">
{PAGE_ROW_DATE_STAMP|cot_date('d.m.Y', $this)}
</time>
2. Предопределённые форматы (рекомендуется для многоязычных сайтов)
Cotonti предоставляет набор локализованных форматов, которые хранятся в массиве $Ldt в языковых файлах (main.xx.lang.php).
Это позволяет автоматически подстраивать отображение под язык пользователя.
Актуальный список предопределённых форматов (на примере русского языка, 2025–2026 гг.)
| Ключ | Формат PHP | Пример вывода (русский) | Когда удобно использовать |
| date_full | d.m.Y | 28.02.2026 | Основная дата в списках, карточках |
| date_medium | m.Y | 02.2026 | Месяц и год (архивы, отчёты) |
| date_short | d.m | 28.02 | Краткая дата без года |
| date_text | j F Y | 28 февраля 2026 | Текстовый стиль, статьи, новости |
| date_fulltext | l, j F Y | Суббота, 28 февраля 2026 | Полный красивый формат с днём недели |
| time_full | H:i:s | 14:35:22 | Полное время с секундами |
| time_medium | G:i | 14:35 | Обычное время |
| time_short | i:s | 35:22 | Только минуты и секунды |
| time_text | g:i A | 2:35 PM | Американский стиль с AM/PM |
| datetime_full | d.m.Y H:i:s | 28.02.2026 14:35:22 | Полная метка (логи, админка) |
| datetime_medium | d.m.Y H:i | 28.02.2026 14:35 | Самый популярный вариант «дата + время» |
| datetime_short | d.m H:i | 28.02 14:35 | Компактный вариант |
| datetime_text | j F Y H:i | 28 февраля 2026 14:35 | Текстовый стиль с временем |
| datetime_fulltext | l, j F Y H:i | Суббота, 28 февраля 2026 14:35 | Максимально читаемый вариант |
| week_full | o-\WW | 2026-W08 | Номер недели ISO с годом |
| week_medium | \WW | W08 | Только номер недели |
| week_short | \WW-N | W08-6 | Неделя + день недели (1=Пн … 7=Вс) |
Рекомендация 2025–2026:
В большинстве современных тем и плагинов используют datetime_medium или date_full + time_medium отдельно.
3. Полезные дополнительные возможности
timeago / «N минут назад»
Многие темы используют функцию cot_build_timeago():
smarty
{PAGE_ROW_DATE_STAMP|cot_build_timeago()} → 3 часа назад
Произвольный формат (как в PHP date())
Можно использовать любые символы из официальной таблицы форматирования PHP date():
smarty
{PAGE_ROW_DATE_STAMP|cot_date('l jS \of F Y \, h:i:s A', $this)}
→ Суббота 28th of February 2026, 02:35:22 PM
Полный список символов смотрите в официальной документации PHP.
4. Глобальное изменение формата (не рекомендуется в 2025+)
Если всё же нужно поменять формат по всему сайту — отредактируйте массив $Ldt в файле:
Пример:
PHP
$Ldt['datetime_medium'] = 'd.m.Y H:i';
$Ldt['date_text'] = 'j F Y г.';
Но помните: обновление Cotonti может перезаписать файл. Лучше создавать свой языковой оверрайд.
Краткие рекомендации на 2026 год
- Используйте cot_date('datetime_medium', $this) — самый универсальный и читаемый вариант
- Для семантической разметки всегда добавляйте атрибут datetime с форматом c
- Для «живого» времени применяйте cot_build_timeago()
- В многоязычных проектах максимально полагайтесь на ключи $Ldt
- Не забывайте про параметр $usertimezone = true — это важно для пользователей из разных часовых поясов
3 minutes read Sodium Carbonate