Найти тему
Topsite Web

Использование Twig Tweak в Drupal

Оглавление

Модуль 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 — необязательные аргументы для фильтров.

Примеры

  1. {{ drupal_view ( 'who_s_new' , 'block_1' ) }}
    этот код поместит новые представления who's new block_1 в шаблон.
  2. {{ drupal_view ( 'who_s_new' , 'block_1' , arg_1 , arg_2 ) }}
    дополнительные аргументы могут быть переданы, если добавлены контекстные фильтры, которые можно использовать с передаваемыми аргументами.
  3. {% 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 — массив значений свойств по умолчанию равен [].

Примеры

  1. {{ drupal_entity ( 'block_content' , 1 ) }}
    для отображения блока контента, идентификатор которого равен 1 в шаблоне Twig.
  2. {{ drupal_entity ( 'node' , 123 , 'teaser' ) }}
    для отображения данных тизера узла объекта, идентификатор которого равен 123.
  3. {{ drupal_entity_form ( 'node' , 1 ) }}
    для отображения формы редактирования сущности узла в шаблоне.
  4. {{ 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 — чтобы указать язык, если нет, будет выбран язык сайта по умолчанию.

Примеры

  1. {{ drupal_field ( 'field_image' , 'node' , 1 , 'teaser' ) }}
    для отображения значения field_image узла 1 в режиме просмотра тизера.
  2. {{ 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 — для указания требуется проверка доступа.

Примеры

  1. {{ drupal_image ( 123 ) }}
    это отобразит исходное изображение, fid которого равно 123.
  2. {{ drupal_image ( '9bb27144-e6b2-4847-bd24-adcc59613ec0' ) }}
    это будет отображать изображение с использованием уникального uuid изображения.
  3. {{ drupal_image ( 'public://example.jpg' ) }}
    для рендеринга изображения с использованием uri файла изображения.
  4. {{ 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.

Пример

  1. {{ node.field_image | file_url }}
    возвращает абсолютный URL-адрес файла изображения.
  2. {{ node.field_image | file_uri }}
    возвращает uri файла изображения относительно его каталога sites/default/files.
Twig tweak — это дополнительный модуль Drupal, который обеспечивает лучший опыт разработки, предлагая быстрые и простые функции и фильтры, сохраняя при этом читабельный код.

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