Więc po spędzeniu więcej czasu, niż chciałbym przyznać, patrząc na to, wymyśliłem dwa rozwiązania tego.
Rozwiązanie 1
Jednym ze sposobów, aby to zrobić, jest funkcja daty, o której darol100 wspomniał w swojej odpowiedzi. Zmieniając jego przykład dla mojej sprawy, w moim node--article.html.twig
pliku zmieniłem:
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
do
{% set createdDate = node.getCreatedTime|date('j F Y') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
Zaletą tego podejścia jest to, że jest łatwe i szybkie. Wadą jest to, że nie korzystam z wbudowanego systemu formatu daty Drupala.
Rozwiązanie 2
Aby skorzystać z systemu formatu daty Drupala, najpierw utworzyłem własny format w admin/config/regional/date-time
. Następnie edytowałem node--article.html.twig
w następujący sposób:
{% set createdDate = node.getCreatedTime|format_date('my_custom_format') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
Zakłada się, że nazwa mojego niestandardowego formatu została nazwana „ Mój niestandardowy format ”, co skutkuje nazwą maszyny my_custom_format
.
Chociaż to rozwiązanie wymaga dodatkowego kroku, wydaje mi się, że jest to bardziej Drupal.
Dowiedziałem się o tym na tej stronie o filtrach gałązek Drupala .
<?php print format_date($node->created, 'custom', 'm/d/y'); ?>
.Jestem bardziej za rozwiązaniem Chrisa 2. Jak mówi, jest to bardziej drupaliczny sposób ... ale nie jest to jeszcze najlepsza opcja.
format_date () został uznany za przestarzały i zostanie usunięty przed Drupalem 9 ... co oznacza, że pewnego dnia dokonasz aktualizacji Drupala i to się zepsuje.
Zamiast tego lepiej jest to zrobić w pliku .theme w funkcji wstępnego przetwarzania.
źródło
Spostrzeżenie na temat tego, co powiedział Duke:
Tak, funkcja Drupal format_date () zdefiniowana w core / include / common.inc jest w rzeczywistości przestarzała. Ale kiedy używasz filtra gałązkowego format_date () , NIE wywołujesz tej funkcji Drupal, zamiast tego używasz filtra gałązkowego zdefiniowanego przez Drupal w TwigExtension :: getFilters () , a ten filtr wywołuje DateFormatter :: format () .
Dlatego użycie filtru gałązkowego format_date () jest bezpieczne, a rozwiązanie Chrisa 2 jest w porządku.
źródło
Możliwe jest również poprawienie używanego formatu daty i zmiana tego w interfejsie użytkownika. Po prostu porównaj to, co widzisz na stronie, z formatami dat w
admin/config/regional/date-time/
Jeśli zmienisz np. „Domyślną średnią datę”, zmieni daty w tym formacie bez dotykania żadnych plików szablonów / gałązek.
Formaty daty można również ustawić / przetłumaczyć na język dla konfiguracji wielojęzycznej.
źródło
Możesz utworzyć własne pole przesłane przez, używając Display Suite do utworzenia pola tokena.
W Drupal 8 / structure / ds / fields
Następnie dodaj pole używając html i tokenów takich jak ...
źródło
Możesz dostosować format w node.html.twig w następujący sposób:
źródło
Możesz mieć wszystkie formaty PHP dla daty i godziny
źródło
Aby mieć pewność, że zmieniam tylko znaki daty, ale żadnych otaczających elementów HTML, używam następującego haka:
Zamień
[theme_name]
na nazwę swojego motywu ihtml_date
żądany format czasu, jeden z tych, które znajdziesz pod/admin/config/regional/date-time
.źródło
Użyłem następującego kodu dla węzła - artykuł - full.html.twig:
źródło