Форматирование дат в Twig на Drupal 10/11: date и format_date() с примерами

В Drupal 10/11 при работе с шаблонами Twig часто требуется вывести дату в нужном формате — будь то текущая дата, дата из поля сущности или timestamp. Для этого можно использовать стандартный Twig-фильтр date, а также функцию format_date().

В этой статье разберём основные варианты с примерами, в том числе:

  • использование форматов из админки /admin/config/regional/date-time.
  • получение текущего timestamp;
  • вывод даты в любом формате PHP;
  • локализация с помощью format_date();
  • работа с датами в ISO-формате;

Получение текущего времени в Unix timestamp

Twig в Drupal умеет работать со специальным значением 'now', которое означает текущее время. Чтобы получить timestamp (количество секунд с 1 января 1970 г.), используется формат U:

Это аналог вызова time() в PHP — выведет текущий timestamp.

Форматирование даты с помощью фильтра date

Фильтр date позволяет преобразовать дату или timestamp в строку по любому шаблону, поддерживаемому PHP-функцией date().

Примеры:

Плюсы:

  • Работает «из коробки» в Drupal.
  • Поддерживает все форматы PHP date().

Минусы:

  • Не учитывает языковые локализации (месяцы/дни на русском не появятся автоматически).

Локализованное форматирование с format_date()

Drupal предоставляет функцию format_date(), которая умеет выводить даты с учётом языковых настроек сайта (локализация).

Синтаксис:

  • timestamp — число в секундах (Unix timestamp).
  • type — предустановленный формат (short, medium, long, custom).
  • format — свой шаблон даты (используется только при type = 'custom').
  • timezone — часовой пояс (опционально).

Пример: дата на русском языке

Здесь:

  • 'now'|date('U') — текущий timestamp.
  • 'custom' — говорим, что используем свой формат.
  • 'j F Y' — день без ведущего нуля, полное название месяца, год.
  • ‘Europe/Moscow’ — часовой пояс Москвы.
  • 'ru' — вывод на русском языке (если настроена локализация).

Нужен ли Twig Tweak для работы с датой?

Twig Tweak — это модуль, предоставляющий дополнительные функции и фильтры для работы с Twig. Однако format_date() — это встроенный фильтр Drupal и не требует установки Twig Tweak для работы.

Модуль Twig Tweak может понадобиться для других полезных функций, таких как drupal_view(), file_url(), dpm() и т.д., но для использования format_date() достаточно стандартной установки Drupal.

Работа с датами из поля ноды (ISO 8601 → timestamp)

В Drupal поля даты в Twig-шаблоне могут быть доступны как строки в ISO-формате.

Например:

Для преобразования в читаемую дату (без локализации) подойдет фильтр date, он умеет напрямую работать с ISO-датами:

Здесь конвертация происходит автоматически.

Для локализованного вывода через format_date(), нам нужен timestamp. Превращаем ISO в timestamp с помощью фильтра date('U'):

Использование предустановленных форматов из настроек Drupal

В Drupal есть страница Конфигурация → Региональные настройки → Форматы даты и времени
(/admin/config/regional/date-time), где можно создать собственные именованные форматы даты.

Например, вы можете создать формат:

  • Машинное имя: my_custom_date
  • Формат: l, j F Y (пятница, 8 августа 2025)

После этого его можно использовать в Twig через format_date().

Плюсы:

  • Форматы меняются централизованно в админке, без правки шаблонов.
  • Удобно для мультиязычных сайтов: перевод названий месяцев/дней управляется Drupal.
  • Поддерживает часовые пояса и локализацию.

Мало букафф? Читайте есчо !

Rutube: интегрируем как oembed provider source в Drupal

Февраль 28, 2025 г.

Задача - добавить rutube как oembed провайдера в медиа библиотеку, чтобы можно было создать медиа тип Rutube, где будет поле для ввода ссылки. Медиа поля ...

Читать

Добавляем в page cache зависимость от значения cookie

Март 4, 2025 г.

Модуль page_cache использует http_middleware, чтобы зацепиться за объект request и произвести кеширование страницы. Работает он для анонимных пользователей. ...

Читать

Чтение данных из oembed провайдера

Март 11, 2025 г.

В Drupal 10/11 поддержка Oembed провайдеров в ядре (модуль media) позволяет легко и непринуждённо читать данные о медиа прямо из провайдера. Ранее я рассказывал как зарегистрировать oembed для rutube, чтобы иметь возможность оперировать видео контентом ...

Читать

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

Март 17, 2025 г.

Иногда бывает потребность создать ссылку из кода. Структура ссылки довольно сложная на этапе препроцессинга шаблона меню, делюсь сниппетом кода. Потребуются следующие зависимости: [crayon-68b0adb1967e6024159259/] Добавим ссылку в меню main. ...

Читать
 

Комментарии к «Форматирование дат в Twig на Drupal 10/11: date и format_date() с примерами»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: