Модуль Twig Tweak значительно экономит время разработчиков Drupal, работающих с технологией Twig. Он предлагает несколько полезных функций и фильтров, которые могут облегчить работу разработчика. Разработчики также могут писать хорошо отформатированный код, который более понятен. Я рекомендую использовать модуль настройки Twig в Drupal для быстрой и легкой разработки Drupal.
Как установить модуль Twig Tweak
Вы можете скачать модуль на сайте Drupal.org. После загрузки и извлечения файла поместите его в каталог проекта. Вы также можете использовать composer для загрузки с помощью следующей команды composer require drupal/twig_tweak.
Перейдите в по ссылке в меню с названием расширение и включите модуль. Вы можете использовать drush для включения модуля.
Реализация функций и фильтров Twig Tweak в Drupal
Представление
Чтобы отобразить представления, мы можем использовать фрагмент кода Twig, как показано ниже.
Синтаксис
{{ drupal_view(views_name, display_id, args) }}
{{ drupal_view_result(views_name, display_id) }}
Аргументы
views_name — машинное имя представлений.
display_id — имя текущего дисплея.
args — необязательные аргументы для фильтров.
Примеры
- {{ drupal_view ( 'who_s_new' , 'block_1' ) }}
этот код поместит новые представления who's new block_1 в шаблон. - {{ drupal_view ( 'who_s_new' , 'block_1' , arg_1 , arg_2 ) }}
дополнительные аргументы могут быть переданы, если добавлены контекстные фильтры, которые можно использовать с передаваемыми аргументами. - {% set view = drupal_view_result ( 'related' , 'block_1' )| length %}
{% if view > 0 %}
{{ drupal_view('related', 'block_1') }}
{% endif %}
В этом коде представление отображается только в том случае, если представление имеет результаты в шаблоне.
Блоки
Чтобы разместить блоки плагина в шаблоне, мы можем использовать фрагмент настройки Twig, как показано ниже.
Синтаксис
{{ drupal_block('plugin_id', {label: 'Example'|t, some_setting: 'example'}) }}
plugin_id — идентификатор плагина блоков можно найти в аннотациях классов блока.
options — второй параметр является необязательным для предоставления конфигураций для блоков.
Пример
{{ drupal_block ( 'system_breadcrumb_block' ) }}
код Twig для размещения блока хлебных крошек в шаблоне.
Регионы
Для отображения содержимого в регионе по умолчанию или определенной темы.
Синтаксис
{{ drupal_region(region_name, theme_name) }}
Аргументы
region_name — имя региона можно найти в файле info.yml.
theme_name — необязательное имя темы для отображения содержимого региона определенной темы, отличной от значения по умолчанию.
Пример
{{ drupal_region ( 'sidebar_first' , 'bartik' ) }}
чтобы поместить первое содержимое боковой панели темы bartik в шаблон.
Сущность и форма сущности
Чтобы отобразить доступную сущность и форму сущности в шаблоне Twig, мы можем использовать фрагмент, как показано ниже.
Синтаксис
{{drupal_entity(entity_type, id, view_mode, language, access_check) }}
{{ drupal_entity_form(entity_type, id, form_mode, values, access_check ) }}
Аргументы
entity_type — тип объекта, т.е. узел, блок, block_content, веб-форма, абзацы.
id — идентификатор объекта.
view_mode — для просмотра объекта по его доступному режиму просмотра.
language — чтобы указать язык, если нет, будет выбран язык сайта по умолчанию.
access_check — чтобы проверить, что значение по умолчанию для доступа к блоку истинно.
form_mode — для просмотра формы сущности по ее доступному режиму формы.
values — массив значений свойств по умолчанию равен [].
Примеры
- {{ drupal_entity ( 'block_content' , 1 ) }}
для отображения блока контента, идентификатор которого равен 1 в шаблоне Twig. - {{ drupal_entity ( 'node' , 123 , 'teaser' ) }}
для отображения данных тизера узла объекта, идентификатор которого равен 123. - {{ drupal_entity_form ( 'node' , 1 ) }}
для отображения формы редактирования сущности узла в шаблоне. - {{ drupal_entity_form ( 'node' , values ={ type : 'article' }) }}
для отображения узла добавьте форму типа статьи.
Поле
Чтобы отобразить доступное значение поля любого объекта в шаблоне Twig или получить значение поля, используйте следующий фрагмент настройки Twig.
Синтаксис
{{drupal_field(field_name, entity_type, id, view_mode, language, access_check) }}
Аргументы
field_name — машинное имя поля.
entity_type — тип объекта, т.е. узел, блок, веб-форма, абзацы.
id — идентификатор объекта.
view_mode — для просмотра объекта доступен режим просмотра.
language — чтобы указать язык, если нет, будет выбран язык сайта по умолчанию.
Примеры
- {{ drupal_field ( 'field_image' , 'node' , 1 , 'teaser' ) }}
для отображения значения field_image узла 1 в режиме просмотра тизера. - {{ drupal_field ( 'field_image' , 'node' , 1 , { type : 'image_url' , settings : { image_style : 'large' }}) }}
для отображения значения поля изображения с более подробными настройками в шаблоне.
Меню
Чтобы напечатать пункты меню в шаблоне, мы используем настройку Twig, как показано ниже.
Синтаксис
{{drupal_menu(menu_name, level, depth, expand) }}
Аргументы
menu_name — машинное имя уровня меню.
level — уровень меню для отображения по умолчанию равен 1.
depth — максимальное количество уровней меню для отображения по умолчанию равно 0.
expand — чтобы позволить пользователю выбрать, будет ли оно расширено или нет. Значение по умолчанию — false.
Пример
{{ drupal_menu ( 'main_navigation' ) }}
для отображения меню со значениями по умолчанию.
Форма
Чтобы отобразить форму Drupal в шаблоне, мы можем реализовать настройку Twig.
Синтаксис
{{drupal_form(form_id. args) }}
Аргументы
form_id — идентификатор формы, которую вы хотите отобразить в шаблоне.
args — необязательные аргументы, которые можно передать конструктору.
Пример
{{ drupal_form( 'Drupal\\system\\Form\\CronForm' ) }}
для отображения формы в шаблоне Twig, указав путь к ее классу.
Изображение
Есть несколько способов рендеринга изображений в twig. Вот несколько простых способов использования настроек Twig.
Синтаксис
{{ drupal_image(property_id, style, attribute, responsive, access_chek) }}
Аргументы
property_id — это уникальный идентификатор изображения, т. е. fid, uuid или file_uri.
style — стиль изображения.
attribute — для предоставления атрибутов изображения, таких как alt, title.
responsive — чтобы указать, что стиль изображения является адаптивным стилем изображения.
access_chek — для указания требуется проверка доступа.
Примеры
- {{ drupal_image ( 123 ) }}
это отобразит исходное изображение, fid которого равно 123. - {{ drupal_image ( '9bb27144-e6b2-4847-bd24-adcc59613ec0' ) }}
это будет отображать изображение с использованием уникального uuid изображения. - {{ drupal_image ( 'public://example.jpg' ) }}
для рендеринга изображения с использованием uri файла изображения. - {{ drupal_image('public://example.jpg', 'thumbnail', {alt: 'The alternative text'|t, title: 'The title text'|t}) }}
вот пример отображения миниатюры изображения, добавив alt и заголовок для изображения. Примечание. Путь uri будет основываться на расположении файлов по умолчанию, поскольку он установлен на site/default/files/example.jpg.
Токен
В Drupal появились токены, которые очень полезны и значительно экономят время разработчика Drupal. Из настройки Twig мы можем визуализировать токены, как показано ниже.
Синтаксис
{{ drupal_token(token, data, options) }}
Аргументы
token — имя печатаемого токена.
data — массив значений, используемых для замены токенов.
options — это также используется в качестве флага при замене токенов.
Примеры
{{ drupal_token ( 'site:name' ) }}
для отображения имени сайта с использованием токенов в twig.
Конфигурации
Печать значений конфигурации в Twig будет очень полезна на сайте, где вам нужно распечатать динамические данные в соответствии с конфигурациями.
Синтаксис
{{ drupal_config(config_name, key) }}
Аргументы
config_name — имя файла конфигурации yml.
key — конкретное значение, которое будет напечатано из конфигурации.
Пример
{{ drupal_config ( 'system.site' , 'name' ) }}
для печати имени сайта из конфигурации system.site.yml в шаблон.
Dump
Отладка является наиболее важной частью процесса разработки. Вот несколько быстрых и крутых методов отладки в twig. Ему нужен компонент Symfony var dumper.
Его можно установить из композитора командой
$ composer require --dev symfony/var-dumper
Синтаксис
{{ drupal_dump(var) }}
Аргументы
var — для печати определенных аргументов в шаблоне. Если переменная не указана, будут напечатаны все переменные внутри шаблона.
dd() — это сокращение для метода.
Пример
{{ dd ( var ) }}
выводит данные var из шаблона.
Заголовки Drupal
Чтобы получить название текущего маршрута, мы можем использовать Twig.
Пример
{{ drupal_title () }}
напечатает заголовок текущего маршрута.
Drupal URL
Чтобы создать URL-адрес из внутреннего пути внутри Twig, мы можем использовать фрагмент настройки Twig.
Синтаксис
{{ drupal_url(input, options, access_check) }}
Аргументы
input — используйте путь входной ссылки.
options — массив опций, включая параметры запроса.
access_check — чтобы проверить, что значение доступа по умолчанию равно false.
Пример
{{ drupal_url ( 'node/1' , { query : { foo : 'bar' }, fragment : 'example' , absolute : true }) }}
возвращает https://site_name/node/1?foo=bar#example в качестве вывода.
Ссылки Drupal
Он генерирует путь ссылки, если URL-адрес недоступен для пользователя. Он работает так же, как Drupal URL, но с дополнительными атрибутами.
Синтаксис
{{ drupal_link(text, input, options, access_check) }}
Аргументы
text — текст для отображения.
input — используйте путь входной ссылки.
options — массив опций, включая параметры запроса.
access_check — чтобы проверить, что значение доступа по умолчанию равно false.
Пример
{{ drupal_link('View'|t, 'node/1', {attributes: {target: '_blank'}}) }}
этот код создаст ссылку с именем View, а также откроет ссылку в новой вкладке.
Сообщения Drupal
Чтобы отобразить сообщения о состоянии Drupal в шаблоне.
Пример
{{ drupal_messages () }}
будет отображать статус в зависимости от действий пользователя на сайте.
Хлебные крошки Drupal
Чтобы отобразить хлебные крошки сайта в шаблоне.
Пример
{{ drupal_breadcrumb () }}
этот код отобразит блок хлебных крошек в шаблоне.
Точки останова
Чтобы добавить точку отладки в шаблон Twig, выполните следующие действия.
Пример
{{ drupal_breakpoint () }}
этот код добавит точку останова в шаблон, куда вы ее добавили.
Заменить токен
Чтобы заменить все токены в заданной строке соответствующими значениями.
Пример
{{ '<h1>[site:name]</h1><div>[site:slogan]</div>'|token_replace }}
этот код заменит токены, доступные в строке, соответствующими значениями.
Заменить текст
Он выполнит поиск по тексту с помощью регулярного выражения и заменит его параметрами.
Синтаксис
{{ text | preg_replace('(pattern)',replacement) }}
Аргументы
text — текст, в котором должен происходить поиск и замена.
pattern — текст, который следует заменить при вводе.
replace — замещающий текст для замены.
Пример
{{ 'foo' | preg_replace('(foo)', 'bar') }}
в этом примере «foo» заменяется на «bar»
Фильтры стиля изображения
Вернет URL-адрес изображения с загруженным стилем изображения.
Синтаксис
{{ image_uri|image_style(style) }}
Аргументы
image_uri — URI файла поля изображения.
style — стиль, который вы хотите применить к изображению.
Пример
{{ 'public://images/example.jpg' | image_style ( 'thumbnail' ) }}
это применит стиль миниатюры к данному изображению.
Фильтр транслитерации
Он транслитерирует текст из Unicode в US-ASCII и заменяет неизвестные символы на «?» по умолчанию.
Синтаксис
{{ text|transliterate(language, unknown_chars, maxlength) }}
Аргументы
text — текст, который необходимо перевести.
language — код языка, для которого он должен переводить по умолчанию, en (английский).
unknown_chars — символ, который необходимо заменить неизвестным символом, по умолчанию — «?».
maxlength — максимальная длина слова, которое должно проверяться на перевод.
Пример
{{ 'Привет!'|transliterate }}
этот код вернёт вывод на английском языке «Privet!».
Проверить фильтр разметки
Примените включенные фильтры к предоставленному тексту.
Синтаксис
{{ text | check_markup(format_id, language, filters_to_skip) }}
Аргументы
text — текст, к которому должны применяться фильтры.
format_id — следует использовать идентификатор текстового формата.
language — язык, к которому должен применяться модуль форматирования.
filter_to_skip — массив фильтров для пропуска значений по умолчанию [].
Пример
{{ '<b>bold</b> <strong>strong</strong>' | check_markup('restricted_html') }}
этот код применит фильтр 'restricted_html' к заданному тексту.
Обрезать
Это будет использоваться для усечения строк до указанного количества символов.
Синтаксис
{{ text | truncate(max_length, word_safe, add_ellipsis, word_safe_len) }}
Аргументы
text — текст, который нужно обрезать.
max_length — максимальная длина обрезаемого текста.
word_safe — логическое значение для усечения в конце по умолчанию false;
Пример
{{ 'Some long text' | truncate(10, true) }}
этот код усекает текст до 10 символов, а также усекает по границе.
С фильтром
Это добавит новые элементы в массив. Он также возвращает массив с измененным значением.
Пример
{{ content.field_image | with('title', 'Photo' | t) }}
этот код добавит заголовок к изображению поля и возвратит результат.
Дочерний фильтр
Чтобы отфильтровать дочерние элементы массива рендеринга в шаблоне Twig. Кроме того, у этого будет возможность сортировать элементы по их весу. Это будет полезно при обработке отдельных полей.
Пример
{{ node.field_example|children }}
этот код отобразит все дочерние элементы field_example в шаблоне.
Файл Uri и фильтр URL
Оба этих фильтра будут использоваться при работе с изображениями в Twig. Вы можете получить Uri и URL-адрес изображения, используя эти методы в настройке Twig.
Пример
- {{ node.field_image | file_url }}
возвращает абсолютный URL-адрес файла изображения. - {{ node.field_image | file_uri }}
возвращает uri файла изображения относительно его каталога sites/default/files.
Twig tweak — это дополнительный модуль Drupal, который обеспечивает лучший опыт разработки, предлагая быстрые и простые функции и фильтры, сохраняя при этом читабельный код.
В этой статье я перечислил некоторые из многих функций и фильтров, предлагаемых модулем настройки Twig, а также несколько простых приемов, которые помогут вам реализовать их быстрее.