Поэтому, потратив больше времени, чем мне хотелось бы признаться, изучая это, я нашел два решения для этого.
Решение 1
Один из способов сделать это - использовать функцию даты, о которой darol100 упомянул в своем ответе. Модифицируя его пример для моего случая, в моем node--article.html.twig
файле я изменил:
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
в
{% set createdDate = node.getCreatedTime|date('j F Y') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
Преимущество такого подхода в том, что он прост и быстр. Недостатком является то, что я не использую встроенную систему форматирования даты в Drupal.
Решение 2
Чтобы использовать систему форматирования даты в Drupal, я сначала создал свой собственный формат в admin/config/regional/date-time
. Затем я отредактировал node--article.html.twig
следующим образом:
{% set createdDate = node.getCreatedTime|format_date('my_custom_format') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
Предполагается, что я назвал свой пользовательский формат « Мой пользовательский формат », что приводит к имени машины my_custom_format
.
Хотя это решение требует дополнительного шага, я чувствую, что это более Drupal способ сделать это.
Я узнал об этом на этой странице о Drupal's Twig Filters .
<?php print format_date($node->created, 'custom', 'm/d/y'); ?>
.Я больше за решение Криса 2. Поскольку он говорит, что это больше друпал ... но это еще не лучший вариант.
format_date () устарела и будет удалена до Drupal 9 ... это означает, что однажды вы сделаете обновление drupal, и это сломается.
Вместо этого лучше сделать это в своем файле .theme в функции предварительной обработки.
источник
Наблюдение за тем, что сказал герцог:
Да, функция Drupal format_date (), определенная в core / includes / common.inc , фактически устарела. Но когда вы используете фильтр веток format_date (), вы НЕ вызываете эту функцию Drupal, вместо этого вы используете фильтр веток, определенный Drupal в TwigExtension :: getFilters () , и этот фильтр вызывает DateFormatter :: format () .
Следовательно, использование фильтра веток format_date () безопасно, и решение Криса 2 в порядке.
источник
Также можно отформатировать уже используемый формат даты и просто изменить его в пользовательском интерфейсе. Просто сравните то, что вы видите на странице с форматами даты в
admin/config/regional/date-time/
Если вы измените, например, «Средняя дата по умолчанию», это изменит даты, используя этот формат, не касаясь файлов шаблонов / веток.
Форматы даты также могут быть установлены / переведены для каждого языка для настройки нескольких языков.
источник
Вы можете создать собственное поле Submitted By, используя Display Suite, для создания поля Token.
В Drupal 8 / структура / DS / поля
Затем добавьте поле, используя HTML и токены, как ...
источник
Вы можете настроить формат в node.html.twig следующим образом:
источник
Вы можете иметь все форматы PHP для даты и времени
источник
Чтобы быть уверенным, что я изменяю только символы даты, но не окружающие элементы HTML, я использую следующий хук:
Замените
[theme_name]
на название вашей темы иhtml_date
желаемый формат времени, один из тех, которые вы найдете под/admin/config/regional/date-time
.источник
Я использовал следующий код для node - article - full.html.twig:
источник