15 лучших модулей в Drupal 8

Опубликовано admin - ср, 09/25/2019 - 16:11

Drupal 8 одна из популярнейших CMS в области создания сайтов. При этом для неё доступно огромное количество модулей, упрощающих жизнь как простому разработку, так и обычному пользователю.

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

Сегодня мы поговорим о 15 лучших, на мой взгляд, модулях Drupal 8, существующих

1. Paragraphs

Paragraphs  - модуль позволяющий с помощью функциональности перетаскивания редактировать структуру статьи из взаимосвязанных полей. В некоторой степени это "шаблон" разметка, которая позволяет в дальнейшем её использовать многократно. В любом расположении на странице, что улучшает гибкость данного модуля и отображение структуры сайта.

В дополнение к сказанному, Paragraphs позволяет использовать встраивать шаблоны друг  друга неоднократно.

2. Webform

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

Данный модуль я поставлю на второе место за следующие его положительные свойства:

  1. Гибкость настроек;
  2. Возможность Yaml и Rest;
  3. Формы в несколько этапов (что очень удобно для пользователей интернет магазинов).

3. Display Suite

Display Suite полезный и удобный модуль, позволяющий настраивать шаблон с помощью функциональности перетаскивания полей.

При этом позволяет указать настройки отображения полей для различных видов отображения данных (для полной статьи для teaser и т.д.).

4. Rabbit Hole

Данный модуль имеет возможность скрывать от пользователя нежелательный контент на сайте. Например, когда пользователь по той или иной причине зашел на страницу представления (view), или к примеру, сайт содержит типы файлов, которые пользователь не должен просматривать и никогда к ним обращаться.

По моему мнению, данный модуль вполне может Вам пригодится в дальнейшем для улучшения поисковой выдачи сайта.

5. Field Group

Из названия можно догадаться, что модуль поддерживает группировку  чего-то. На самом деле с его помощью Вы можете группировать отдельные поля. Группировка на основе вкладок (tabs), пори чем как горизонтальных так и вертикальных.

6. Pathauto & Redirect

Ничего сложного, но модуль полезен тем, что создает автоматически алиасы статей и отдает 301 Redirect. Думаю без него не обойдется ни одни нормальный сайт.

7. MMenu

С помощью данного модуля возможно создать меню для мобильный устройств с поддержкой тачскрин. Также одним из плюсов данного модуля является возможность комбинировать несколько меню, а также поддержка hammer.js и superfish.

8. AdvAgg

Модуль дополняющий стандартные возможноcти Drupal 8 для аггрегации CSS и JS файлов. С учетом интернет аудитории, состоящей на 50% из смартфонов, оптимизация контента будет востребована, что позволяет сделать данный модуль.

При этом, на странице модуля указаны тесты, основанные на Google's PageSpeed Insights and WebPagetest.org. Из которых следует прирост производительности и ускорения загрузки сайта.

9. Twig Tweak

Модуль поддерживающий возможность вставки блоков и сущностей Drupal 8 в шаблонах Twig. Примеры (взяты с официальной страницы Drupal):

<dl class="examples">

  {# This accepts views arguments as well. #}
  <dt>View:</dt>
  <dd>{{ drupal_view('who_s_new', 'block_1') }}</dd>

  {# This might be useful to check if a view returns nothing. #}
  <dt>View results:</dt>
  <dd>{{ drupal_view_result('who_s_new', 'block_1') }}</dd>

  {# No need to configure this block on "admin/structure/block" page. #}
  <dt>Block:</dt>
  <dd>{{ drupal_block('system_branding_block', {label: 'Branding', use_site_name: false}) }}</dd>

  {# Bypass block.html.twig theming. #}
  <dt>Block (without wrapper):</dt>
  <dd>{{ drupal_block('system_branding_block', wrapper=false) }}</dd>

  {# Pass theme name as a second argument if needed. #}
  <dt>Region:</dt>
  <dd>{{ drupal_region('sidebar_first') }}</dd>

  {# It can be any content entity. #}
  <dt>Entity:</dt>
  <dd>{{ drupal_entity('block_content', 1) }}</dd>

  {# Form mode can be passed in third parameter. #}
  <dt>Entity edit form:</dt>
  <dd>{{ drupal_entity_form('node', 1) }}</dd>

  {# Bundle (type) property is required for creating a new entity. #}
  <dt>Entity add form:</dt>
  <dd>{{ drupal_entity_form('node', values={type: 'article'}) }}</dd>

  {# Render a single entity field. #}
  <dt>Field:</dt>
  <dd>{{ drupal_field('field_image', 'node', 1) }}</dd>

  {# Expand menu items to display the entire menu tree. #}
  <dt>Menu:</dt>
  <dd>{{ drupal_menu('main') }}</dd>

  {# Specify menu level, depth and expand all children. #}
  <dt>Part of menu:</dt>
  <dd>{{ drupal_menu('admin', 2, 3, TRUE) }}</dd>

  {# Slashes should be escaped. #}
  <dt>Form:</dt>
  <dd>{{ drupal_form('Drupal\\search\\Form\\SearchBlockForm') }}</dd>

  {# The argument can be FID, UUID or URI. Renders an <img> tag #}
  <dt>Image:</dt>
  <dd>{{ drupal_image('public://ocean.jpg', null, {alt: 'Insert alternative text here', title: 'The title text'}) }}</dd>

  {# Check out 'admin/config/media/responsive-image-style' page for available responsive image styles. Renders an <img srcset> or <picture> #}
  <dt>Responsive image:</dt>
  <dd>{{ drupal_image('public://ocean.jpg', 'wide', responsive=true) }}</dd>

  {# The filter processes either path or URI to original image. Renders a plain URL #}
  <dt>Image style:</dt>
  <dd>{{ 'public://images/ocean.jpg'|image_style('thumbnail') }}</dd>

  {# Use token API to deliver data to your templates. #}
  <dt>Token:</dt>
  <dd>{{ drupal_token('site:name') }}</dd>}

  {# Tokens can be extracted from the context. #}
  <dt>Token with context:</dt>
  <dd>{{ drupal_token('node:title', {node: node}) }}</dd>

  {# Replace multiple tokens at once. #}
  <dt>Token replace:</dt>
  <dd>{{ '<h1>[site:name]</h1><div>[site:slogan]</div>'|token_replace }}</dd>

  {# Another way to get site name. #}
  <dt>Config:</dt>
  <dd>{{ drupal_config('system.site', 'name') }}</dd>

  {# Without arguments this would dump all available Twig variables. #}
  <dt>Dump variable:</dt>
  <dd>{{ drupal_dump(var) }}</dd>

  {# Same as previous but shorter. #}
  <dt>Dump variable (alias):</dt>
  <dd>{{ dd(var) }}</dd>

  {# The title is cached per URL. #}
  <dt>Page title:</dt>
  <dd>{{ drupal_title() }}</dd>

  {# Unlike core URL function it accepts path as an argument (not route). #}
  <dt>URL:</dt>
  <dd>{{ drupal_url('node/1', {absolute: true}) }}</dd>

  {# The arguments are pretty much the same as in drupal_url(). #}
  <dt>Link:</dt>
  <dd>{{ drupal_link('Example'|t, 'node/1') }}</dd>

  {# Prints Drupal status messages without block wrapper. #}
  <dt>Status messages:</dt>
  <dd>{{ drupal_messages() }}</dd>

  {# Same as above but for breadcrumbs. #}
  <dt>Breadcrumbs:</dt>
  <dd>{{ drupal_breadcrumb() }}</dd>

  {# The wrapper element must have 'contextual-region' class. #}
  <dt>Contextual links:</dt>
  <dd>
    <div class="contextual-region">
      {{ contextual_links('entity.view.edit_form:view=frontpage&display_id=page_1') }}
      {{ drupal_view('frontpage') }}
    </div>
  </dd>

  {# This makes Xdebug break on the specific line in the compiled Twig template. #}
  <dt>Breakpoint:</dt>
  <dd>{{ drupal_breakpoint() }}</dd>

  {# Welcome back old friend! Refer to Notes (below) to enable. #}
  <dt>PHP filter:</dt>
  <dd class="bad-practice">© {{ 'return date("Y");'|php }}</dd>

  {# The easiest way to alter their output. #}
  <dt>Preg replace:</dt>
  <dd>{{ 'Drupal - community plumbing!'|preg_replace('/(Drupal)/', '<b>$1</b>') }}</dd>

  {# Input language can be passed through arguments. #}
  <dt>Transliteration:</dt>
  <dd>{{ 'Привет!'|transliterate }}</dd>

  {# This supports file, image and media fields. #}
  <dt>File URL:</dt>
  <dd>{{ node.field_media|file_url }}</dd>

  {# Check out available input formats on admin/config/content/formats page. #}
  <dt>Check markup:</dt>
  <dd>{{ '<b>bold</b> <strong>strong</strong>'|check_markup('restricted_html') }}</dd>

  {# See Drupal\Component\Utility\Unicode::truncate(). #}
  <dt>Truncate:</dt>
  <dd>{{ 'Some long text'|truncate(10, true) }}</dd>

  {# This is an opposite of core 'without' filter. #}
  <dt>With:</dt>
  <dd>{{ item|with('#title', 'Example') }}</dd>

  {# Do not put this into node.html.twig template to avoid recursion. #}
  <dt>Entity view:</dt>
  <dd>{{ node|view }}</dd>

  {# You can supply display settings or view mode if necessary. #}
  <dt>Field view:</dt>
  <dd>{{ node.field_image|view }}</dd>

  {# This is useful for processing individual field items. #}
  <dt>Children:</dt>
  <dd>{{ node.field_example|children }}</dd>

</dl>

9. Coffee

Модуль для навигации по меню admin панели к примеру alt + D или alt + shift + D.

10. Adminimal Admin Toolbar

Модуль для навигации по меню в режиме смартфона. Вместо текста в меню будут содержаться иконки.

11. File Entity Browser/Media

Данный модуль заменяет  стандартную загрузку файлов. В дополнение Вы можете загружать множественные изображения и в дальнейшем использовать из неоднократно.

12. Admin Toolbar

На первое место я поставлю данный модуль, поскольку он существенно сокращает мое время для передвижения по администраторскому разделу сайта. Данный модуль также поддерживает ярлыки (shortcut).

13. Module Filter

Также существенно сокращает мое время на поиск и установку модулей. С его использованием будет доступно поле autocomplete, по которому возможно будет фильтровать модули для их поиска.

14. Content Lock

Пригодится для многопользовательской системы Drupal, модуль позволяет блокировать редактирование материалов, если в данный момент их редактирует другой пользователь.

15. reCAPTCHA

Без Google каптчи мой сайт бы заспанили роботы и Ваш тоже).

На этом остановлюсь.

Для сведения, в интернет наткнулся на статистику использования модулей.

статистика модулей Drupal 8

 

В заключение прошу Вас поучаствовать в голосовании:

Какой модуль Drupal 8 популярнее?

Варианты

Взаимосвязанные материалы

# 1. О том как заменить стандартную иконку (Throbber) в Drupal 8 (понедельник, ноября 9, 2020 - 23:23 ),

Для замены стандартной иконки загрузки (Throbber) в Drupal 8 необходимо добавить следующий js код:

читать...
# 2. SetHandler none Drupal_Security...... (вторник, октября 6, 2020 - 23:26 ),
Долго пришлось искать проблему не отображения файлов для которых созданы стили в Drupal 8. читать...
# 3. Temporary file '*****.tmp' could not be created (суббота, сентября 26, 2020 - 19:37 ),

Если в последних версиях Drupal 8 появилась ошибка "Temporary file '*****.tmp' could not be created"

необходимо добавить в  файл \sites\default\settings.php  строку

читать...
# 4. Как правильно кэшировать хлебные крошки в Drupal 8 (среда, января 29, 2020 - 14:12 ),

Несколько раз сталкивался с тем что последний элемент Breadcrumb кэшировался на страницах с типом "node", несмотря на то, что страница менялась. То же самое наблюдалось и с view. читать...

# 5. Drupal 8. Несколько способов вывода информации черех Ajax (понедельник, января 27, 2020 - 23:23 ),
О том, как осуществить вывод информации с использованием ajax в Drupal 8. В Drupal 8 имеется несколько методов вывода информации через ajax - c применением методов Api и с использованием стандартных функций jQuery. При этом jQuery в Drupal 8 установлена по умолчанию. читать...

Комментарии

На разработку сайта! Скидки до 20%!