Donc, après avoir passé plus de temps que je ne veux l'admettre, j'ai trouvé deux solutions.
Solution 1
Une façon de le faire est avec la fonction de date mentionnée par darol100 dans sa réponse. En modifiant son exemple pour mon cas, dans mon node--article.html.twig
dossier, j'ai changé:
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
à
{% set createdDate = node.getCreatedTime|date('j F Y') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
L'avantage de cette approche est qu'elle est simple et rapide. L'inconvénient est que je n'utilise pas le système de format de date intégré de Drupal.
Solution 2
Afin d'utiliser le système de format de date de Drupal, j'ai d'abord créé mon format personnalisé sur admin/config/regional/date-time
. Ensuite, j'ai édité node--article.html.twig
comme suit:
{% set createdDate = node.getCreatedTime|format_date('my_custom_format') %}
{% trans %}Submitted by {{ author_name }} on {{ createdDate }} {% endtrans %}
Cela suppose que j'ai nommé mon format personnalisé " Mon format personnalisé ", ce qui donne le nom de la machine my_custom_format
.
Bien que cette solution nécessite une étape supplémentaire, je pense que c'est la façon la plus Drupal de le faire.
Je l'ai appris sur cette page sur les filtres Twig de Drupal .
<?php print format_date($node->created, 'custom', 'm/d/y'); ?>
.Je suis plus pour la solution 2 de Chris. Comme il dit, c'est plutôt la façon drupale ... mais ce n'est pas encore la meilleure option.
format_date () a été déprécié et sera supprimé avant Drupal 9 ... ce qui signifie qu'un jour, vous ferez une mise à jour drupal et cela se cassera.
Au lieu de cela, il est préférable de le faire dans votre fichier .theme dans une fonction de prétraitement.
la source
Une observation sur ce que Duke a dit:
Oui, la fonction Drupal format_date () définie dans core / includes / common.inc est, en fait, obsolète. Mais, lorsque vous utilisez le filtre twig format_date (), vous n'appelez PAS cette fonction Drupal, au lieu de cela, vous utilisez le filtre twig défini par Drupal dans TwigExtension :: getFilters () , et ce filtre appelle DateFormatter :: format () .
Par conséquent, l'utilisation du filtre twig format_date () est sûre et la solution 2 de Chris est très bien.
la source
Il est également possible d'afficher le format de date déjà utilisé et de simplement le modifier dans l'interface utilisateur. Comparez simplement ce que vous voyez sur la page avec les formats de date
admin/config/regional/date-time/
Si vous modifiez par exemple "Date moyenne par défaut", les dates seront modifiées en utilisant ce format sans toucher à aucun fichier de modèle / brindille.
Les formats de date peuvent également être définis / traduits par langue pour une configuration multilingue.
la source
Vous pouvez créer votre propre champ Soumis par en utilisant Display Suite pour créer un champ de jeton.
Dans Drupal 8 / structure / ds / champs
Ajoutez ensuite un champ en utilisant du HTML et des jetons comme ...
la source
Vous pouvez personnaliser le format dans node.html.twig comme ceci:
la source
Vous pouvez avoir tous les formats PHP pour la date et l'heure
la source
Pour être sûr de ne modifier que les caractères de la date mais pas les éléments HTML environnants, j'utilise le crochet suivant:
Remplacez-le
[theme_name]
par le nom de votre thème ethtml_date
par le format d'heure souhaité, l'un de ceux que vous trouvez sous/admin/config/regional/date-time
.la source
J'ai utilisé le code suivant pour node - article - full.html.twig:
la source