Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Фильтры - Изменение переменных в шаблонах Twig

04/05/2020, by maria

Фильтры в Twig могут быть использованы для изменения переменных. Фильтры отделяются от переменной символом трубы. Они могут иметь необязательные аргументы в скобках. Несколько фильтров могут быть связаны. Выход одного фильтра применяется к следующему.

Пример:

{{ content|safe_join(", ")|lower }}

Возможно, вам придется визуализировать элемент перед его фильтрацией:

{{ item|render|filter }}

Twig поставляется с множеством встроенных фильтров, которые вы можете просмотреть в их официальной документации. Drupal имеет множество собственных фильтров.

Drupal Специальные фильтры

Они объявлены в TwigExtension::getFilters().

Translation filters

trans
Этот фильтр (альтернативно, t) будет запускать переменную через функцию Drupal t(), которая будет возвращать переведенную строку. Этот фильтр следует использовать для любых строк интерфейса, помещенных вручную в шаблон, который будет отображаться для пользователей.

Пример:

<a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo"></a>

placeholder
Этот фильтр экранирует контент в HTML и форматирует его с помощью drupal_placeholder(), что позволяет отображать выделенный текст.

Пример:

{% trans %}Submitted on {{ date|placeholder }}{% endtrans %}

Unsafe translation
Некоторые шаблоны небезопасны и не должны использоваться, потому что они передают переменную непосредственно в перевод. Это не только раздувает список строк для перевода, но также является потенциальной уязвимостью, особенно если вывод может быть введен пользователем. Некоторые примеры неправильного перевода:

{# DO NOT DO THIS #}
{{ var1|t }}
{{ var1|placeholder }}
{% trans %}{{ var1 }}{% endtrans %}

Дополнительные фильтры

clean_class
Этот фильтр подготавливает строку для использования в качестве допустимого имени класса HTML. Смотрите Html::getClass()

clean_id
Этот фильтр подготавливает строку для использования в качестве действительного идентификатора HTML. Смотрите Html::getID()

format_date
Этот фильтр подготавливает временную метку для использования в качестве форматированной строки даты. Смотрите DateFormatter::format()

raw
По возможности следует избегать этого фильтра, особенно если вы выводите данные, которые могут быть введены пользователем. Смотрите эту страницу для получения дополнительной информации об автопробеге в Drupal 8.

render
Этот фильтр является оболочкой для функции render(). Он принимает массив визуализации и выводит визуализированную HTML-разметку. Это может быть полезно, если вы хотите применить дополнительный фильтр (например, разбор тегов), или если вы хотите сделать условие на основе визуализированного вывода (например, если у вас есть непустой массив визуализации, который возвращает пустую строку). Он также может использоваться для строк и определенных объектов, в основном тех, которые реализуют метод toString().

safe_join
Фильтр safe_join объединяет несколько строк вместе с поставляемым разделителем. Смотрите TwigExtension::safeJoin().

Пример:

{{ items|safe_join(', ') }}

Это выведет каждую строку в переменную items, соединенную вместе с запятой, разделяющей каждый элемент.

without
Фильтр without создает копию визуализируемого массива и удаляет дочерние элементы по ключу, указанному в аргументах, передаваемых фильтру. Копия может быть напечатана без этих элементов. Исходный массив для визуализации все еще доступен и может использоваться для полной печати дочерних элементов в шаблоне ветки. Смотрите twig_without.

Примеры:

{{ content|without('links') }}

Это печатает все в переменной content, кроме content.links.

{{ content|without('links', 'field_some_data') }}

Пример исключения двух элементов из отображения. Это исключит «links» и «field_some_data».

 

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.