Формат даты в представлениях Views Drupal 8

Главные вкладки

Аватар пользователя lex7dark lex7dark 14 июля 2016 в 21:23

В Views добавив поле Content: Время создания, формат "в прошлом" (time ago) получаю такой вывод например: "5[2] дней 4 часа 28[2] минут 7[2] секунд ago".
Так вот интересно что за значения в квадратных скобках и как их убрать? Также при русской локализации добавляется "ago". Как можно привести вывод даты в порядок : "5 дней 4 часа 28 минут 7 секунд назад"?
date format views

ВложениеРазмер
Иконка изображения date format views81.93 КБ

Лучший ответ

Аватар пользователя alexboy alexboy 17 сентября 2016 в 0:00
2

Как вариант можно воспользоваться фильтром twig - replace и переопределить поле дата во вьюхе:
{{ created|replace({'ago': "назад"}) }}

Комментарии

Аватар пользователя lex7dark lex7dark 15 июля 2016 в 0:02

Для чего нужны значение в квадратных скобках на фронте я так и не понял, но данную проблему формата решил. Значение "[2]" задается локализацией, т.е. переводом admin/config/regional/translate. Поэтому смело ищем там значения перевода с "[2]" и удаляем.
В вот с переводом "ago" сложней. В локализации видимо эта переменная не поддерживается. Поэтому я решил ее кардинально: в ядре Друпала есть файл TimestampAgoFormatter.php (core\lib\Drupal\Core\Field\Plugin\Field\FieldFormatter) который можно чуть "изменить". Находим <?phppublic static function defaultSettings()?> в которой есть массив с ключом <?php'past_format' => '@interval ago',?> и меняем его на <?php'past_format' => '@interval &#1085;&#1072;&#1079;&#1072;&#1076;',?>
В результате получаем адекватный для русских вывод на фронт типа "5 дней 4 часа 28 минут 7 секунд назад".
С Друпал знаком мало но понимаю что данный выход не корректен. Поэтому было бы здорово, если бы кто то описал решение в рамках друпал а не "фикса" файлов ядра.

Аватар пользователя alexboy alexboy 17 сентября 2016 в 0:00
2

Как вариант можно воспользоваться фильтром twig - replace и переопределить поле дата во вьюхе:
{{ created|replace({'ago': "назад"}) }}