# data[].attributes.body.value
Provides placeholder variables (tokens) and an interface for browsing available tokens. As records are displayed, contextual values are replaced, such as [node:title] or [user:name]. See full list of modules that use or provide tokens or the list of open issues tagged with 'token'.
Pledges
#D7AX - I pledge to make this module as accessible as it can be. If you find any flaws, please submit an issue and tag it D7AX. Help me fix them if you can.

# data[].attributes.body.processed
Provides placeholder variables (tokens) and an interface for browsing available tokens. As records are displayed, contextual values are replaced, such as [node:title] or [user:name].

See full list of modules that use or provide tokens or the list of open issues tagged with 'token'.

Pledges

#D7AX - I pledge to make this module as accessible as it can be. If you find any flaws, please submit an issue and tag it D7AX. Help me fix them if you can.

# data[].attributes.body.summary
Provides placeholder variables (tokens) and an interface for browsing available tokens. As records are displayed, contextual values are replaced, such as [node:title] or [user:name].

# data[].attributes.body.value
The Pathauto module automatically generates URL/path aliases for various kinds of content (nodes, taxonomy terms, users) without requiring the user to manually specify the path alias. This allows you to have URL aliases like /category/my-node-title instead of /node/123. The aliases are based upon a "pattern" system that uses tokens which the administrator can change.
Drupal 8+ Requirements

Token

CTools, removed in 8.x-1.11, still required in composer.json for BC reasons, see release notes for more information.

Drupal 7 Requirements

Token

Known issues

D7: Multilingual URL alias support is still a little unstable and should be tested before used in production. See this issue in core [#269877] which is very important and needs more coders/testers/reviewers. There is also a list of issues related to i18n in Pathauto which needs someone to help triage, test, review, and write fixes.

Recommended modules

Redirect (D7, D8) when installed Pathauto will provide a new "Update Action" in case your URLs change. This is the recommended update action and is considered the best practice for SEO and usability.

Global Redirect (D7) ensures that your content is only visiable at the one, best URL possible (i.e. requests for node/2 are forwarded to "alias-for-node-2"). This is part of Redirect in D8.

Pathologic (untested, but may help with updating outdated links in existing content)

Sub-pathauto (D7) provides a way to use one alias for multiple URLs as long as the so that "node/1" is aliased to "about-my-site" then you can use "about-my-site/edit" to access "node/1/edit". Neat!

Transliteration (D7) is useful if your site is likely contain characters beyond ASCII 128 and you want them transliterated into ASCII 128. In Drupal 8, Pathauto uses the API provided by Drupal core.

Co-Maintainers
Pathauto was originally written by mikeryan and maintained by Greg Knaddison (greggles). It is currently co-maintained by Frederik 'Freso' S. Olesen and Dave Reid. The Drupal 8 version is maintained by Sascha Grossenbacher (Berdir). Credits: Logo by Nico Grienauer (Grienauer).

# data[].attributes.body.processed
The Pathauto module automatically generates URL/path aliases for various kinds of content (nodes, taxonomy terms, users) without requiring the user to manually specify the path alias. This allows you to have URL aliases like /category/my-node-title instead of /node/123. The aliases are based upon a "pattern" system that uses tokens which the administrator can change.

Drupal 8+ Requirements

Token

CTools, removed in 8.x-1.11, still required in composer.json for BC reasons, see release notes for more information.

Drupal 7 Requirements

Token

Known issues

D7: Multilingual URL alias support is still a little unstable and should be tested before used in production. See this issue in core [#269877] which is very important and needs more coders/testers/reviewers. There is also a list of issues related to i18n in Pathauto which needs someone to help triage, test, review, and write fixes.

Recommended modules

Redirect (D7, D8) when installed Pathauto will provide a new "Update Action" in case your URLs change. This is the recommended update action and is considered the best practice for SEO and usability.

Global Redirect (D7) ensures that your content is only visiable at the one, best URL possible (i.e. requests for node/2 are forwarded to "alias-for-node-2"). This is part of Redirect in D8.

Pathologic (untested, but may help with updating outdated links in existing content)

Sub-pathauto (D7) provides a way to use one alias for multiple URLs as long as the so that "node/1" is aliased to "about-my-site" then you can use "about-my-site/edit" to access "node/1/edit". Neat!

Transliteration (D7) is useful if your site is likely contain characters beyond ASCII 128 and you want them transliterated into ASCII 128. In Drupal 8, Pathauto uses the API provided by Drupal core.

Co-Maintainers

Pathauto was originally written by mikeryan and maintained by Greg Knaddison (greggles). It is currently co-maintained by Frederik 'Freso' S. Olesen and Dave Reid.

The Drupal 8 version is maintained by Sascha Grossenbacher (Berdir).

Credits: Logo by Nico Grienauer (Grienauer).
Back to top

# data[].attributes.body.value
What is the Admin Toolbar module?
The Admin Toolbar module intends to improve the default Toolbar (the administration menu at the top of your site) to transform it into a drop-down menu, providing a fast access to all administration pages. The module works on the top of the default toolbar core module and is therefore a light module and keeps all the toolbar functionalities (shortcut / media responsive).
How to use Admin Toolbar module?
Get the code like any other module. composer require drupal/admin_toolbar The module has a configuration form since version 3.0.0.
Sub-modules

Admin Toolbar Extra Tools adds extra links like what does Admin Menu module for Drupal 7 (flush caches, run cron, etc...). You must install the Admin Toolbar Extra Tools module to benefit from lots of useful links in the toolbar menu.

Admin Toolbar Search - If you want to have the search box to look for administration pages you need to install the Admin Toolbar Search sub-module.

Admin Toolbar Links Access Filter - The Admin links Access filter module that fixes the display of links user shouldn't have access to (see [#296693]) was included as the Admin Toolbar Links Access Filter submodule. Caveats: to make it work on custom menu links, you should use the route name and not the internal path. See https://www.drupal.org/project/admin_toolbar/issues/3201668 for more details.

Version 3
The 3.x version introduce a configuration form to limit the number of bundles to display in the drop-down menu.
Development version status
The development versions (-dev) are where the newest stuff is, including any bug fixes and new features. We try to make sure it is tested before we commit anything, but occasionally a bug will get from us. Your help in testing this code is greatly appreciated. The translation templates may not always be up-to-date in the dev releases.
Complementary modules

Toolbar Menu allows you to add easily any menu to your toolbar and plays nicely with Admin toolbar making them dropdown menus.

Toolbar Anti-flicker removes the impact of the admin toolbar sub-menu on the rest of the page.

Coffee is a good module to look for admin paths.

Adminimal Admin toolbar provides a black theming, recommended for the Adminimal theme.

Admin toolbar content language adds links for creation of content in any active language.

Toolbar Themes provides nice UI themes.

Issues
If you love the Kanban Boards we have one thanks to ContribKanban. As with all contributed modules, when considering submitting an issue:

Read the documentation (two or three times is better). Don't forget the home page.

Review the existing issues list. (Don't forget to select "<- Any ->" for the "Status" field.)

Gather all the appropriate information. This may include (but is not limited to):

Drupal version.

Browser type and version.

Database type and version.

Error messages, if any.

Module settings.

Submit the issue. If other modules are involved, you may need to submit the issue to those modules as well.

If you go to provide a patch use the following naming convention: [admin_toolbar]-[short-description]-[issue-number]-[comment-number]-[drupal-version].patch

And please don't forget to use the Issue Summary Template to report an issue, if you need help to understand how the issue queue works, see the Getting Started in the Issue Queue video.

# data[].attributes.body.processed
Back to top
What is the Admin Toolbar module?

The Admin Toolbar module intends to improve the default Toolbar (the administration menu at the top of your site) to transform it into a drop-down menu, providing a fast access to all administration pages.
The module works on the top of the default toolbar core module and is therefore a light module and keeps all the toolbar functionalities (shortcut / media responsive).

How to use Admin Toolbar module?

Get the code like any other module.
composer require drupal/admin_toolbar
The module has a configuration form since version 3.0.0.

Sub-modules

Admin Toolbar Extra Tools adds extra links like what does Admin Menu module for Drupal 7 (flush caches, run cron, etc...). You must install the Admin Toolbar Extra Tools module to benefit from lots of useful links in the toolbar menu.

Admin Toolbar Search - If you want to have the search box to look for administration pages you need to install the Admin Toolbar Search sub-module.

Admin Toolbar Links Access Filter - The Admin links Access filter module that fixes the display of links user shouldn't have access to (see [#296693]) was included as the Admin Toolbar Links Access Filter submodule. Caveats: to make it work on custom menu links, you should use the route name and not the internal path. See https://www.drupal.org/project/admin_toolbar/issues/3201668 for more details.

Version 3

The 3.x version introduce a configuration form to limit the number of bundles to display in the drop-down menu.

Development version status

The development versions (-dev) are where the newest stuff is, including any bug fixes and new features. We try to make sure it is tested before we commit anything, but occasionally a bug will get from us. Your help in testing this code is greatly appreciated. The translation templates may not always be up-to-date in the dev releases.
Back to top
Complementary modules

Toolbar Menu allows you to add easily any menu to your toolbar and plays nicely with Admin toolbar making them dropdown menus.

Toolbar Anti-flicker removes the impact of the admin toolbar sub-menu on the rest of the page.

Coffee is a good module to look for admin paths.

Adminimal Admin toolbar provides a black theming, recommended for the Adminimal theme.

Admin toolbar content language adds links for creation of content in any active language.

Toolbar Themes provides nice UI themes.

Back to top
Issues

If you love the Kanban Boards we have one thanks to ContribKanban.
As with all contributed modules, when considering submitting an issue:

Read the documentation (two or three times is better). Don't forget the home page.

Review the existing issues list. (Don't forget to select "<- Any ->" for the "Status" field.)

Gather all the appropriate information. This may include (but is not limited to):

Drupal version.

Browser type and version.

Database type and version.

Error messages, if any.

Module settings.

Submit the issue. If other modules are involved, you may need to submit the issue to those modules as well.

If you go to provide a patch use the following naming convention:
[admin_toolbar]-[short-description]-[issue-number]-[comment-number]-[drupal-version].patch

And please don't forget to use the Issue Summary Template to report an issue, if you need help to understand how the issue queue works, see the Getting Started in the Issue Queue video.
Back to top

# data[].attributes.body.summary
Improves the default administration toolbar menu by turning it into a drop-down, for fast access to all administration pages. Can also provide access to additional tools from the admin menu.

# data[].attributes.body.value
This suite is primarily a set of APIs and tools to improve the developer experience. It also contains a module called the Page Manager whose job is to manage pages. In particular it manages panel pages, but as it grows it will be able to manage far more than just Panels. For the moment, it includes the following tools:

Plugins -- tools to make it easy for modules to let other modules implement plugins from .inc files.

Exportables -- tools to make it easier for modules to have objects that live in database or live in code, such as 'default views'.

AJAX responder -- tools to make it easier for the server to handle AJAX requests and tell the client what to do with them.

Form tools -- tools to make it easier for forms to deal with AJAX.

Object caching -- tool to make it easier to edit an object across multiple page requests and cache the editing work.

Contexts -- the notion of wrapping objects in a unified wrapper and providing an API to create and accept these contexts as input.

Modal dialog -- tool to make it simple to put a form in a modal dialog.

Dependent -- a simple form widget to make form items appear and disappear based upon the selections in another item.

Content -- pluggable content types used as panes in Panels and other modules like Dashboard.

Form wizard -- an API to make multi-step forms much easier.

CSS tools -- tools to cache and sanitize CSS easily to make user-input CSS safe.

CTools for Drupal 8 / 9 / 10
The 8.x-3.x branch is the most current version of ctools, designed for Drupal 9 and 10. Once Drupal 10 is released, this module will be compatible with the LTS version of Drupal 9. Dependent modules should rely on 4.0.0+ release. All 4.0.x and 8.x-3.x releases are the same and based off of the 8.x-3.x branch. When new breaking changes occur, they will be committed to 5.x.

# data[].attributes.body.processed
This suite is primarily a set of APIs and tools to improve the developer experience. It also contains a module called the Page Manager whose job is to manage pages. In particular it manages panel pages, but as it grows it will be able to manage far more than just Panels.

For the moment, it includes the following tools:

Plugins -- tools to make it easy for modules to let other modules implement plugins from .inc files.

Exportables -- tools to make it easier for modules to have objects that live in database or live in code, such as 'default views'.

AJAX responder -- tools to make it easier for the server to handle AJAX requests and tell the client what to do with them.

Form tools -- tools to make it easier for forms to deal with AJAX.

Object caching -- tool to make it easier to edit an object across multiple page requests and cache the editing work.

Contexts -- the notion of wrapping objects in a unified wrapper and providing an API to create and accept these contexts as input.

Modal dialog -- tool to make it simple to put a form in a modal dialog.

Dependent -- a simple form widget to make form items appear and disappear based upon the selections in another item.

Content -- pluggable content types used as panes in Panels and other modules like Dashboard.

Form wizard -- an API to make multi-step forms much easier.

CSS tools -- tools to cache and sanitize CSS easily to make user-input CSS safe.

CTools for Drupal 8 / 9 / 10

The 8.x-3.x branch is the most current version of ctools, designed for Drupal 9 and 10. Once Drupal 10 is released, this module will be compatible with the LTS version of Drupal 9.
Dependent modules should rely on 4.0.0+ release.
All 4.0.x and 8.x-3.x releases are the same and based off of the 8.x-3.x branch. When new breaking changes occur, they will be committed to 5.x.

# data[].attributes.body.summary
CTools is a developer toolkit that provides APIs, etc. to improve the developer experience. Most often you don't install this directly; it's a dependency of some other module you want.

# data[].attributes.body.value
The Metatag module allows you to automatically provide structured metadata, aka "meta tags", about a website. In the context of search engine optimization, when people refer to meta tags they are usually referring to the meta description tag and the meta keywords tag that may help improve the rankings and display of a site in search engine results. In addition, the module provides support for meta tags (Open Graph Protocol from Facebook, Twitter Cards from Twitter) that allow control of how content appears when shared on social networks. This project is the offical successor of the Nodewords module.
Dependencies

D7: CTools and Token

7.x-2.x also requires PHP 7

D9/10: Token

2.x also requires PHP 8

Features

Supports a large number of commonly used meta tags, including the page title, canonical URL, description, etc, and for Facebook's Open Graph, Twitter Cards and Dublin Core via included submodules (see full list).

Global settings to control meta tags on all pages.

Per entity and per entity bundle to control default meta tags for all items of a certain type, e.g. all nodes of a certain content type.

Ability to override meta tags on each entity object, e.g. to override meta tags on an individual node.

Multi-lingual support using the Entity Translation module and translation support using the Internationalization (i18n) module.

Full support for entity revisions and workflows based upon revision editing, including compatibility with the Revisioning and Workbench Moderation modules.

D7: Customize meta tags for specific paths (or other conditions) using Context and included Metatag:Context submodule.

D7: Customize meta tags for custom pages built using Panels and Views using included submodules.

D7: Individual permissions for each meta tag can be enabled (see README.txt).

D7: Meta tags can be optionally added to admin pages.

Exportable default meta tag configuration.

Extendable and flexible API for define new meta tags.

D7: Support for Devel Generate (sub-module).

Version 2 vs version 1
Metatag 2.0.x for Drupal 9+ and 7.x-2.x for Drupal 7 include a number of API changes. New features will be added to v2, only bug fixes and security fixes will be added to v1.
Version 1 EOL
The planned EOL for Metatag v1 is December 31st, 2023 January 5th 2025, the same day of Drupal 7's EOL. During 2024 the v1 branches will only receive minimal bug fix support, all active support will go into the v2 branches. Please open bug reports for any problems identified while upgrading to v2.
Resources

Full documentation is available: Metatag for Drupal 7, Metatag for Drupal 9

Video tutorial explaining improvements in v1.5 and providing a suggested setup process.

Drupal core release blockers for Metatag

A blog post from markconroy on how to use tokens to use core's Media fields with Metatag.

How to create custom meta tags in 2.1.0; excellent blog post by Naveen Valecha.

Alternatives and similar modules

Metatags Quick - Uses the Field API to store its meta tag data. Metatag on D7 does not use the Field API for reasons of flexibility and usability. On D9 Metatag does use Field API so the Metatags Quick maintainers will hopefully be helping on Metatag's D9 port.

Page title - Functionality was merged into Metatag.

Open Graph meta tags - Functionality was merged into Metatag.

Refresh - Functionality was merged into Metatag.

EasyMeta - Very limited functionality compared to Metatag.

Metatag iTunes - Functionality was merged into Metatag.

Sandboxes:

Custom Meta Update

Auto Meta Tags

Credits
Maintained since 2012 by Damien McKenna; initial development (2010-2012) by Dave Reid.
Past sponsors

Mediacurrent

Lullabot

Palantir

Acquia

# data[].attributes.body.processed
The Metatag module allows you to automatically provide structured metadata, aka "meta tags", about a website. In the context of search engine optimization, when people refer to meta tags they are usually referring to the meta description tag and the meta keywords tag that may help improve the rankings and display of a site in search engine results. In addition, the module provides support for meta tags (Open Graph Protocol from Facebook, Twitter Cards from Twitter) that allow control of how content appears when shared on social networks.

This project is the offical successor of the Nodewords module.

Dependencies

D7: CTools and Token

7.x-2.x also requires PHP 7

D9/10: Token

2.x also requires PHP 8

Features

Supports a large number of commonly used meta tags, including the page title, canonical URL, description, etc, and for Facebook's Open Graph, Twitter Cards and Dublin Core via included submodules (see full list).

Global settings to control meta tags on all pages.

Per entity and per entity bundle to control default meta tags for all items of a certain type, e.g. all nodes of a certain content type.

Ability to override meta tags on each entity object, e.g. to override meta tags on an individual node.

Multi-lingual support using the Entity Translation module and translation support using the Internationalization (i18n) module.

Full support for entity revisions and workflows based upon revision editing, including compatibility with the Revisioning and Workbench Moderation modules.

D7: Customize meta tags for specific paths (or other conditions) using Context and included Metatag:Context submodule.

D7: Customize meta tags for custom pages built using Panels and Views using included submodules.

D7: Individual permissions for each meta tag can be enabled (see README.txt).

D7: Meta tags can be optionally added to admin pages.

Exportable default meta tag configuration.

Extendable and flexible API for define new meta tags.

D7: Support for Devel Generate (sub-module).

Version 2 vs version 1

Metatag 2.0.x for Drupal 9+ and 7.x-2.x for Drupal 7 include a number of API changes. New features will be added to v2, only bug fixes and security fixes will be added to v1.

Version 1 EOL

The planned EOL for Metatag v1 is December 31st, 2023 January 5th 2025, the same day of Drupal 7's EOL. During 2024 the v1 branches will only receive minimal bug fix support, all active support will go into the v2 branches.

Please open bug reports for any problems identified while upgrading to v2.

Resources

Full documentation is available: Metatag for Drupal 7, Metatag for Drupal 9

Video tutorial explaining improvements in v1.5 and providing a suggested setup process.

Drupal core release blockers for Metatag

A blog post from markconroy on how to use tokens to use core's Media fields with Metatag.

How to create custom meta tags in 2.1.0; excellent blog post by Naveen Valecha.

Alternatives and similar modules

Metatags Quick - Uses the Field API to store its meta tag data. Metatag on D7 does not use the Field API for reasons of flexibility and usability. On D9 Metatag does use Field API so the Metatags Quick maintainers will hopefully be helping on Metatag's D9 port.

Page title - Functionality was merged into Metatag.

Open Graph meta tags - Functionality was merged into Metatag.

Refresh - Functionality was merged into Metatag.

EasyMeta - Very limited functionality compared to Metatag.

Metatag iTunes - Functionality was merged into Metatag.

Sandboxes:

Custom Meta Update

Auto Meta Tags

Credits

Maintained since 2012 by Damien McKenna; initial development (2010-2012) by Dave Reid.

Past sponsors

Mediacurrent

Lullabot

Palantir

Acquia

Back to top

# data[].attributes.body.summary
Allows generating meta tags for site content, from simpler tags like "description" and "image_src", to more advanced tags like OpenGraph (for Facebook, LinkedIn, etc), Twitter Cards and Dublin Core.

# data[].attributes.body.value
Overview
Adds an Entity Reference field type with revision support, allowing specific entity revisions to be references. This is useful for modules like Paragraphs and Inline Entity Form. A common use case is where an entity is actually part of a parent entity (with an embedded entity form). When the parent entity is updated, the referenced entity is also updated, thus the previous revision of the parent entity should still be pointing to the previous version of the entity to fully support revision diff and rollback.

# data[].attributes.body.processed
Overview

Adds an Entity Reference field type with revision support, allowing specific entity revisions to be references. This is useful for modules like Paragraphs and Inline Entity Form.

A common use case is where an entity is actually part of a parent entity (with an embedded entity form). When the parent entity is updated, the referenced entity is also updated, thus the previous revision of the parent entity should still be pointing to the previous version of the entity to fully support revision diff and rollback.

# data[].attributes.body.summary
Adds an Entity Reference field type with revision support, allowing specific entity revisions to be references. This is useful for modules like Paragraphs and Inline Entity Form.

# data[].attributes.body.value
Overview
Paragraphs is the new way of content creation! It allows you — Site Builders — to make things cleaner so that you can give more editing power to your end-users. Instead of putting all their content in one WYSIWYG body field including images and videos, end-users can now choose on-the-fly between pre-defined Paragraph Types independent from one another. Paragraph Types can be anything you want from a simple text block or image to a complex and configurable slideshow. Paragraphs module comes with a new "paragraphs" field type that works like Entity Reference's. Simply add a new paragraphs field on any Content Type you want and choose which Paragraph Types should be available to end-users. They can then add as many Paragraph items as you allowed them to and reorder them at will. Paragraphs module does not come with any default Paragraph Types but since they are basic Drupal Entities you can have complete control over what fields they should be composed of and what they should look like through the typical Drupal Manage Fields and Manage Display screens. You can also add custom option fields and do conditional coding in your CSS, JS and preprocess functions so that end-users can have more control over the look and feel of each item. This is way much cleaner and stable than adding inline CSS or classes inside the body field's source. So... what's it gonna be? Accordions, Tabs, Slideshows, Masonry galleries, Parallax backgrounds...? Think big! Some more examples:

Add a block of text with an image left to it

Add a slideshow between blocks of text

Add a youtube embed between your text

Add quotes between your content blocks

Features
This module has some overlapping functionality with field_collection, but this module has some advantages over field_collection.

Different fields per paragraph bundle

Using different paragraph bundles in a single paragraph field

Displays per paragraph bundle

Bundles are exportable with features.

Entities, so: exportable field bases/instances, usable in Search API, usable in Views

Related modules

Paragraphs pack

Classy paragraphs

Edgy

Entity background

Paragraphs Defaults

Apachesolr Paragraphs

Paragraphs ID

Entity behaviors

Demo sites

Create a new task to get your site in here

Drupal 8

Paragraphs evolved significantly since its full feature port of Drupal 7. The module currently offers two widgets:
Classic widget
This widget offers a stable UI with limited features that will not be changed or updated. Bugfixing only.
EXPERIMENTAL widget
This widget provides many new features like duplicating paragraphs and a drag & drop mode as well as an improved decluttered user experience. It is in heavy use but major changes between versions are to be expected. This widget functionality can be extended through Paragraphs Behavior Plugins.
Requirements

Entity Reference Revisions

Use Diff to indicate changes between revision.
Drupal 7
See this page for the Drupal 7 information and documentation. It requires Entity >= 1.2. Credits: Paragraphs logo by Nico Grienauer (Grienauer).

# data[].attributes.body.processed
Back to top
Overview

Paragraphs is the new way of content creation!
It allows you — Site Builders — to make things cleaner so that you can give more editing power to your end-users.

Instead of putting all their content in one WYSIWYG body field including images and videos, end-users can now choose on-the-fly between pre-defined Paragraph Types independent from one another. Paragraph Types can be anything you want from a simple text block or image to a complex and configurable slideshow.

Paragraphs module comes with a new "paragraphs" field type that works like Entity Reference's. Simply add a new paragraphs field on any Content Type you want and choose which Paragraph Types should be available to end-users. They can then add as many Paragraph items as you allowed them to and reorder them at will.

Paragraphs module does not come with any default Paragraph Types but since they are basic Drupal Entities you can have complete control over what fields they should be composed of and what they should look like through the typical Drupal Manage Fields and Manage Display screens.

You can also add custom option fields and do conditional coding in your CSS, JS and preprocess functions so that end-users can have more control over the look and feel of each item. This is way much cleaner and stable than adding inline CSS or classes inside the body field's source.

So... what's it gonna be? Accordions, Tabs, Slideshows, Masonry galleries, Parallax backgrounds...? Think big!

Some more examples:

Add a block of text with an image left to it

Add a slideshow between blocks of text

Add a youtube embed between your text

Add quotes between your content blocks

Back to top
Features

This module has some overlapping functionality with field_collection, but this module has some advantages over field_collection.

Different fields per paragraph bundle

Using different paragraph bundles in a single paragraph field

Displays per paragraph bundle

Bundles are exportable with features.

Entities, so: exportable field bases/instances, usable in Search API, usable in Views

Back to top
Related modules

Paragraphs pack

Classy paragraphs

Edgy

Entity background

Paragraphs Defaults

Apachesolr Paragraphs

Paragraphs ID

Entity behaviors

Back to top
Demo sites

Create a new task to get your site in here

Back to top
Drupal 8

Paragraphs evolved significantly since its full feature port of Drupal 7.

The module currently offers two widgets:

Classic widget

This widget offers a stable UI with limited features that will not be changed or updated. Bugfixing only.

EXPERIMENTAL widget

This widget provides many new features like duplicating paragraphs and a drag & drop mode as well as an improved decluttered user experience. It is in heavy use but major changes between versions are to be expected.

This widget functionality can be extended through Paragraphs Behavior Plugins.

Requirements

Entity Reference Revisions

Use Diff to indicate changes between revision.
Back to top
Drupal 7

See this page for the Drupal 7 information and documentation. It requires Entity >= 1.2.

Credits: Paragraphs logo by Nico Grienauer (Grienauer).
Back to top

# data[].attributes.body.value
The Webform module allows you to build any type of form to collect any type of data, which can be submitted to any application or system. Every single behavior and aspect of your forms and their inputs are customizable. Whether you need a multi-page form containing a multi-column input layout with conditional logic or a simple contact form that pushes data to a SalesForce/CRM, it is all possible using the Webform module for Drupal 10+.

▶ Watch an introduction to Webform
Try Webform

Wizard example

Form builder

Features

The Webform module provides all the features expected from an enterprise proprietary form builder combined with the flexibility and openness of Drupal.

Forms

Drafts

Preview

Scheduling

Sharing

Confirmations

Modal dialogs

Access controls

Prepopulation

Multistep

Submissions

Email notifications

Remote post

Customizable results view

Submission flagging

Submission export/import

Submission upload

Submission limits

PDF generation

Automatic purging

Elements

Standard inputs

Date/time inputs

File uploads

Computed elements

Composite elements

Custom elements

Entity references

Scales and Likerts

more....

Add-ons

SPAM protection

CRM integration

Data encryption

Submission analysis

Mail handling

Translations

Headless support

Workflow

more...

The Webform module is committed to being accessible to everyone
View our accessibility self-assessment | Learn more about our commitment

Getting involved and support options

Get involved

Get involved in the Drupal community and the Webform module. Review a patch, write documentation, contribute code, volunteer, and more...

Contribute

Free for all

Drupal Association

The Drupal Association is an educational non-profit organization that fosters and supports the Drupal software project, the community and its growth.

Join

Starting at $5 a month

Fund development

Help fund the day-to-day tasks required to maintain the Webform module. Funds are used to triage issues, resolve security issues, and tag new releases.

Fund

Starting at $5 a month

Getting the most out of the Webform module

Discovering the Webform module

The best way to understand how the Webform module works is to try it out by installing the module. The Webform module's user interface includes inline help videos, which are also available on Drupal.org and YouTube. I recommend watching the Webform module introduction and exploring videos about advanced features, including PDF generation, custom elements, and sharing forms.

The Webform module provides a great deal of functionality out of the box. It includes example modules that show all the available form elements and commonly used form features, including multi-step forms. There are also demo modules that walk you through how to build advanced applications, including an event registration system and an application evaluation workflow.

Once you have determined what features are available, you can start exploring add-ons, which are Drupal modules that provide additional features and integrations.

Finding help with the Webform module

The Webform module's issue queue is for bugs, feature requests, and planning. Please post general support questions to Drupal Answers. You can also ask questions or help answer questions on the #webform channel on Drupal Slack.

Getting involved with the Webform module and the Drupal community

The Webform module is part of Drupal's contributed module ecosystem. The Webform module and Drupal are open source and built by a collaboration of people worldwide that make up the Drupal community. By installing and using Drupal, you are a member of this community. I encourage you and your organization to contribute something; sometimes, simply reporting and maybe fixing a minor bug can make a difference.

Get involved in the Drupal community

Supporting the Drupal Association

The Drupal Association provides the infrastructure for hosting and distributing the Webform module. Being a member of the Drupal Association ensures that our collaboration and community are supported and sustainable.

Join the Drupal Association

Funding ongoing development of the Webform module

The Webform module uses an Open Collective to transparently collect funds that support the day-to-day tasks around the Webform module and ensure stable and reliable releases. Backing the Webform module's Open Collective helps guarantee that no tasks fall through the cracks.

Back the Webform module's Open Collective

About the Webform module

About the Webform module for Drupal 10+

Webform for Drupal 10+ is a completely new code base that takes a different but familiar approach to solve the challenges of building rich, flexible, and maintainable client-facing forms for a Drupal website. Webform for Drupal 10+ includes many new features.

Under development: Webform 6.3.x (for Drupal 10.3.x+/11.x) is the same as Webform 6.2.x with deprecated code removed and only for Drupal 10.3.x+ and Drupal 11.

Webform 6.2.x (for Drupal 10.1.x+) is the same as Webform 6.1.x with deprecated code removed and only for Drupal 10.1.x+. This branch will receive bug fix support until some time after 6.3.x has a full release. This is currently held-up because tests are not passing.

No other versions are supported.

Please visit the Webform documentation pages for an introduction, features overview, video tutorials, and more.

Migrating from Drupal 6/7 to Drupal 10+.

Please see the Webform: Migrate module, which provides webform and submission migration routines from Drupal 6/7 to Drupal 10+.

Thank you to the Webform module's
Open Collective Sponsors

Impact Sponsor

Your Company

Become an Impact Sponsor
Supporting Sponsors

Your Company

Your Company

Become a Supporting Sponsor
Growth Backers

Acquia

New Relic

nextide

Intranet Solutions

TechReviewer

*instinctools

SureBet

Morris Animal Foundation

NotOn
Gamstop
Casinos.com

justuk.club

Zoocha

Your Company

Become a Growth Backer

View all the contributors to the Webform module's Open Collective

# data[].attributes.body.processed
The Webform module allows you to build any type of form to collect any type of data, which can be submitted to any application or system. Every single behavior and aspect of your forms and their inputs are customizable. Whether you need a multi-page form containing a multi-column input layout with conditional logic or a simple contact form that pushes data to a SalesForce/CRM, it is all possible using the Webform module for Drupal 10+.

▶ Watch an introduction to Webform

Try Webform

Wizard example

Form builder

Back to top
Features

The Webform module provides all the features expected from an enterprise proprietary form builder combined with the flexibility and openness of Drupal.

Forms

Drafts

Preview

Scheduling

Sharing

Confirmations

Modal dialogs

Access controls

Prepopulation

Multistep

Submissions

Email notifications

Remote post

Customizable results view

Submission flagging

Submission export/import

Submission upload

Submission limits

PDF generation

Automatic purging

Elements

Standard inputs

Date/time inputs

File uploads

Computed elements

Composite elements

Custom elements

Entity references

Scales and Likerts

more....

Add-ons

SPAM protection

CRM integration

Data encryption

Submission analysis

Mail handling

Translations

Headless support

Workflow

more...

The Webform module is committed to being accessible to everyone
View our accessibility self-assessment | Learn more about our commitment

Back to top
Getting involved and support options

Get involved

Get involved in the Drupal community and the Webform module. Review a patch, write documentation, contribute code, volunteer, and more...

Contribute

Free for all

Drupal Association

The Drupal Association is an educational non-profit organization that fosters and supports the Drupal software project, the community and its growth.

Join

Starting at $5 a month

Fund development

Help fund the day-to-day tasks required to maintain the Webform module. Funds are used to triage issues, resolve security issues, and tag new releases.

Fund

Starting at $5 a month

Back to top
Getting the most out of the Webform module

Discovering the Webform module

The best way to understand how the Webform module works is to try it out by installing the module. The Webform module's user interface includes inline help videos, which are also available on Drupal.org and YouTube. I recommend watching the Webform module introduction and exploring videos about advanced features, including PDF generation, custom elements, and sharing forms.

The Webform module provides a great deal of functionality out of the box. It includes example modules that show all the available form elements and commonly used form features, including multi-step forms. There are also demo modules that walk you through how to build advanced applications, including an event registration system and an application evaluation workflow.

Once you have determined what features are available, you can start exploring add-ons, which are Drupal modules that provide additional features and integrations.

Finding help with the Webform module

The Webform module's issue queue is for bugs, feature requests, and planning. Please post general support questions to Drupal Answers. You can also ask questions or help answer questions on the #webform channel on Drupal Slack.

Getting involved with the Webform module and the Drupal community

The Webform module is part of Drupal's contributed module ecosystem. The Webform module and Drupal are open source and built by a collaboration of people worldwide that make up the Drupal community. By installing and using Drupal, you are a member of this community. I encourage you and your organization to contribute something; sometimes, simply reporting and maybe fixing a minor bug can make a difference.

Get involved in the Drupal community

Supporting the Drupal Association

The Drupal Association provides the infrastructure for hosting and distributing the Webform module. Being a member of the Drupal Association ensures that our collaboration and community are supported and sustainable.

Join the Drupal Association

Funding ongoing development of the Webform module

The Webform module uses an Open Collective to transparently collect funds that support the day-to-day tasks around the Webform module and ensure stable and reliable releases. Backing the Webform module's Open Collective helps guarantee that no tasks fall through the cracks.

Back the Webform module's Open Collective

Back to top
About the Webform module

About the Webform module for Drupal 10+

Webform for Drupal 10+ is a completely new code base that takes a different but familiar approach to solve the challenges of building rich, flexible, and maintainable client-facing forms for a Drupal website. Webform for Drupal 10+ includes many new features.

Under development: Webform 6.3.x (for Drupal 10.3.x+/11.x) is the same as Webform 6.2.x with deprecated code removed and only for Drupal 10.3.x+ and Drupal 11.

Webform 6.2.x (for Drupal 10.1.x+) is the same as Webform 6.1.x with deprecated code removed and only for Drupal 10.1.x+. This branch will receive bug fix support until some time after 6.3.x has a full release. This is currently held-up because tests are not passing.

No other versions are supported.

Please visit the Webform documentation pages for an introduction, features overview, video tutorials, and more.

Migrating from Drupal 6/7 to Drupal 10+.

Please see the Webform: Migrate module, which provides webform and submission migration routines from Drupal 6/7 to Drupal 10+.

Back to top
Thank you to the Webform module'sOpen Collective Sponsors

Impact Sponsor

Your Company

Become an Impact Sponsor

Supporting Sponsors

Your Company

Your Company

Become a Supporting Sponsor

Growth Backers

Acquia

New Relic

nextide

Intranet Solutions

TechReviewer

*instinctools

SureBet

Morris Animal Foundation

NotOn
Gamstop
Casinos.com

justuk.club

Zoocha

Your Company

Become a Growth Backer

View all the contributors to the Webform module's Open Collective

Back to top

# data[].attributes.body.summary
Build forms to collect data from site visitors. Create everything from a simple contact form to a multi-page form with many fields, conditional logic, and email notifications.

# data[].attributes.body.value
Provides the ability to create manual redirects and maintain a canonical URL for all content, redirecting all other requests to that path.
Features

Common API for loading, saving, and deleting redirects.

Case-insensitive redirect matching with a hook to allow other modules to narrow-down the candidate redirects.

Redirect counter and last used timestamp, with automatic cleanup of inactive redirects. (Provided by Redirect Metrics in D8)

Integration with Drupal's page cache to optimize redirects and performance.

Complete individual redirect access API.

Views API integration.

D8: Maintaining a canonical path and redirecting alternative URL's like non-aliased path, path without language prefixes and so on (Previously provided by Global redirect)

D8: Separate Redirect 404 module that logs aggregated 404 request (can suppress them in the default log) and allows to create redirects from them
D8: Separate Redirect Domain module allows wildcard and domain redirects

Recommended Modules

Pathauto can be configured to automatically generate path redirects to ensure that URL alias changes do not break existing links.

D7: Multi-path autocomplete helps provide auto-complete listings for the destination textfield on the redirect form. D8 uses the available link autocomplete field (supports only nodes).

Pathologic helps transform relative links in content to absolute URLs. Most helpful when you move your site to a new domain or different folder.

D7: Match Redirect provides redirecting based on path patterns with wildcards. Does not extend or require the Redirect module itself.

# data[].attributes.body.processed
Provides the ability to create manual redirects and maintain a canonical URL for all content, redirecting all other requests to that path.

Features

Common API for loading, saving, and deleting redirects.

Case-insensitive redirect matching with a hook to allow other modules to narrow-down the candidate redirects.

Redirect counter and last used timestamp, with automatic cleanup of inactive redirects. (Provided by Redirect Metrics in D8)

Integration with Drupal's page cache to optimize redirects and performance.

Complete individual redirect access API.

Views API integration.

D8: Maintaining a canonical path and redirecting alternative URL's like non-aliased path, path without language prefixes and so on (Previously provided by Global redirect)

D8: Separate Redirect 404 module that logs aggregated 404 request (can suppress them in the default log) and allows to create redirects from them

D8: Separate Redirect Domain module allows wildcard and domain redirects

Recommended Modules

Pathauto can be configured to automatically generate path redirects to ensure that URL alias changes do not break existing links.

D7: Multi-path autocomplete helps provide auto-complete listings for the destination textfield on the redirect form. D8 uses the available link autocomplete field (supports only nodes).

Pathologic helps transform relative links in content to absolute URLs. Most helpful when you move your site to a new domain or different folder.

D7: Match Redirect provides redirecting based on path patterns with wildcards. Does not extend or require the Redirect module itself.

Back to top

# data[].attributes.body.value
Fieldgroup will, as the name implies, group fields together. All fieldable entities will have the possibility to add groups to wrap their fields together. Fieldgroup comes with default HTML wrappers like vertical tabs, horizontal tabs, accordions, fieldsets or div wrappers. The field group project is a follow-up on the field group module in CCK.
Available group types

Fieldsets

Horizontal tabs

Vertical tabs

Details

Accordions

Divs

Multipage steps: Note: This is only client side and removed in drupal 8 version.

HTML5 elements

Html elements

Notes

This project will NOT include the multigroup feature as it existed for drupal6. Use http://drupal.org/project/field_collection

In Drupal 8, the old Collapsible fieldsets with default open or closed state are now called "Details". Tick "Display element open by default." if you want the fieldset open by default, otherwise it will be closed by default.

In the Drupal 8 version, Horizontal and vertical tabs are merged into 1 type: 'Tabs'

For Drupal 8.3 and higher, use the fieldgroup 8.3 branch. When you still use a Drupal version lower then 8.3, use the fieldgroup 8.1 branch

Modules that depend on fieldgroup

Fieldgroup views

Fieldgroup multiple

Multistep

Field group table

Foundation group

Field group link

Field group colorbox

Field group background image

Field group Popup

Field group Bootstrap

Field group Layout

Field group Label

Open an issue if you want to add another module in thie list!

Related modules

Display suite: DS will define a layout resulting in a Fields UI with regions and groups.

Extra screenshots and video's

Video with Multipage feature in field_group

# data[].attributes.body.processed
Fieldgroup will, as the name implies, group fields together. All fieldable entities will have the possibility to add groups to wrap their fields together. Fieldgroup comes with default HTML wrappers like vertical tabs, horizontal tabs, accordions, fieldsets or div wrappers.

The field group project is a follow-up on the field group module in CCK.

Available group types

Fieldsets

Horizontal tabs

Vertical tabs

Details

Accordions

Divs

Multipage steps: Note: This is only client side and removed in drupal 8 version.

HTML5 elements

Html elements

Notes

This project will NOT include the multigroup feature as it existed for drupal6. Use http://drupal.org/project/field_collection

In Drupal 8, the old Collapsible fieldsets with default open or closed state are now called "Details".
Tick "Display element open by default." if you want the fieldset open by default, otherwise it will be closed by default.

In the Drupal 8 version, Horizontal and vertical tabs are merged into 1 type: 'Tabs'

For Drupal 8.3 and higher, use the fieldgroup 8.3 branch. When you still use a Drupal version lower then 8.3, use the fieldgroup 8.1 branch

Modules that depend on fieldgroup

Fieldgroup views

Fieldgroup multiple

Multistep

Field group table

Foundation group

Field group link

Field group colorbox

Field group background image

Field group Popup

Field group Bootstrap

Field group Layout

Field group Label

Open an issue if you want to add another module in thie list!

Related modules

Display suite: DS will define a layout resulting in a Fields UI with regions and groups.

Extra screenshots and video's

Video with Multipage feature in field_group

Back to top

# data[].attributes.body.summary
Allows fields to be grouped together in multiple group types, such as fieldsets, horizontal/vertical tabs, details, accordions, div wrappers, or HTML elements

# data[].attributes.body.value
A wrapper module around the <a href="http://jqueryui.com">jQuery UI</a> effects library that lets module developers add swooshy, swishy effects to their code.

See http://jqueryui.com/demos for some examples of what jQuery UI can do.
See http://jqueryui.com/docs for documentation on how to use it.
See http://jqueryui.com/support if you need help getting jQuery UI to work, once it's being added to your pages.

This is a utility module that won't do anything on its own. See README.txt for how your module can use it to add jQuery UI effects to your pages.

<h2>Drupal 7+</h2>

Since Drupal 7 ships with jQuery UI, the jQuery UI module has been deprecated and moved to the <a href="http://drupal.org/project/jquery_update">jQuery Update</a> module.

<h2>Drupal 8</h2>
jQuery UI was <a href="https://www.drupal.org/node/315035">added to Drupal core in 2009</a>, but jQuery UI has been minimally maintained since 2017 and listed as an <strong>Emeritus project</strong> in https://openjsf.org/projects/ which is described as:

<blockquote>Emeritus projects are those which the maintainers feel <strong>have reached or are nearing end-of-life</strong></blockquote>

jQuery UI is <a href="https://www.drupal.org/node/3064015">deprecated in Drupal core</a> and considered internal from Drupal 9.

This contrib project now has an 8.x branch to provide the asset libraries which are no longer provided as an API by Drupal core .

The individual jQuery UI asset libraries are <a href="https://www.drupal.org/node/3067969">provided in separate modules</a>.

<ul>
    <li><a href="https://www.drupal.org/project/jquery_ui_accordion">jQuery UI Accordion</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_autocomplete">jQuery UI Autocomplete</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_button">jQuery UI Button</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_checkboxradio">jQuery UI Checkboxradio</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_controlgroup">jQuery UI Controlgroup</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_datepicker">jQuery UI Datepicker</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_dialog">jQuery UI Dialog</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_draggable">jQuery UI Draggable</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_droppable">jQuery UI Droppable</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_effects">jQuery UI Effects</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_menu">jQuery UI Menu</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_progressbar">jQuery UI Progressbar</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_resizable">jQuery UI Resizable</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_selectable">jQuery UI Selectable</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_selectmenu">jQuery UI Selectmenu</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_slider">jQuery UI Slider</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_spinner">jQuery UI Spinner</a></li>
    <li><a href="https://www.drupal.org/project/jquery_ui_tooltip">jQuery UI Tooltip</a></li>
</ul>

# data[].attributes.body.processed
A wrapper module around the jQuery UI effects library that lets module developers add swooshy, swishy effects to their code.

See http://jqueryui.com/demos for some examples of what jQuery UI can do.
See http://jqueryui.com/docs for documentation on how to use it.
See http://jqueryui.com/support if you need help getting jQuery UI to work, once it's being added to your pages.

This is a utility module that won't do anything on its own. See README.txt for how your module can use it to add jQuery UI effects to your pages.
Back to top
Drupal 7+

Since Drupal 7 ships with jQuery UI, the jQuery UI module has been deprecated and moved to the jQuery Update module.
Back to top
Drupal 8

jQuery UI was added to Drupal core in 2009, but jQuery UI has been minimally maintained since 2017 and listed as an Emeritus project in https://openjsf.org/projects/ which is described as:

Emeritus projects are those which the maintainers feel have reached or are nearing end-of-life

jQuery UI is deprecated in Drupal core and considered internal from Drupal 9.

This contrib project now has an 8.x branch to provide the asset libraries which are no longer provided as an API by Drupal core .

The individual jQuery UI asset libraries are provided in separate modules.

jQuery UI Accordion

jQuery UI Autocomplete

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Datepicker

jQuery UI Dialog

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Resizable

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Slider

jQuery UI Spinner

jQuery UI Tooltip

Back to top

# data[].attributes.body.value
Add challenge-response tests to user-facing forms on your site to protect against spambot submissions. Other CAPTCHA types are supported via additional modules. A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions by spambots, which are automated scripts that post spam content everywhere they can. The CAPTCHA module provides this feature to virtually any user facing web form on a Drupal site.
Additional CAPTCHA Modules

Cloudflare turnstile Compatible with 9 and 10 Drupal.

reCAPTCHA Compatible with 8,9 and 10 Drupal.

Captcha Riddler Compatible with 8,9 and 10 Drupal.

CAPTCHA after Compatible with 8,9 and 10 Drupal with beta rebase on 12 June 2023. (Show CAPTCHA protection on selected forms after specified number of unsuccessful form submit attempts has been made.)

Nocaptcha Recaptcha Only for Drupal 8,9 and Not maintained after 27 Nov 2021.

CAPTCHA Pack Only for Drupal 7 and Not maintained after 23 October 2011.

Text CAPTCHA Only for Drupal 7 and Not maintained after 24 November 2014.

Hidden CAPTCHA Only for Drupal 7 and Not maintained after 29 Mar 2018.

KeyCAPTCHA Only for Drupal 7 and Not maintained after 5 May 2012.

Draggable CAPTCHA Compatible with Drupal 9.4 and above.

Image CAPTCHA refresh Only for Drupal 7 and Not maintained after 9 November 2015.

Egglue Semantic CAPTCHA Only for Drupal 6 and Not maintained after 19 April 2017.

(Last update: 2023-06-29)
Version Information

Branch 2.x: Actively maintained version with bug fixes and general improvements, e.g. twig templates). Drupal 9.4+ only! Upgrade path from 8.x-1.x, but please check your output and move custom template overwrites into twig.

Branch 8.x-1.x. Legacy branch and a mirror of the 2.x branch. Last version to support Drupal 8 is 8.x-1.10.

Branch 7.x-1.x: Drupal 7 only, replaced by Branch 8.x-1.x for Drupal 9 compatibility - no further development.

Alternative modules
You could also consider spam filtering or hybrid solutions like:

The AntiSpam module, is the successor of the Akismet module, and it provides spam protection to your Drupal site using external antispam service like Akismet, TypePad and Defensio.

The spam module provides spam filtering and related tools

The honeypot module

# data[].attributes.body.processed
Add challenge-response tests to user-facing forms on your site to protect against spambot submissions. Other CAPTCHA types are supported via additional modules.

A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. The purpose of CAPTCHA is to block form submissions by spambots, which are automated scripts that post spam content everywhere they can. The CAPTCHA module provides this feature to virtually any user facing web form on a Drupal site.

Additional CAPTCHA Modules

Cloudflare turnstile Compatible with 9 and 10 Drupal.

reCAPTCHA Compatible with 8,9 and 10 Drupal.

Captcha Riddler Compatible with 8,9 and 10 Drupal.

CAPTCHA after Compatible with 8,9 and 10 Drupal with beta rebase on 12 June 2023. (Show CAPTCHA protection on selected forms after specified number of unsuccessful form submit attempts has been made.)

Nocaptcha Recaptcha Only for Drupal 8,9 and Not maintained after 27 Nov 2021.

CAPTCHA Pack Only for Drupal 7 and Not maintained after 23 October 2011.

Text CAPTCHA Only for Drupal 7 and Not maintained after 24 November 2014.

Hidden CAPTCHA Only for Drupal 7 and Not maintained after 29 Mar 2018.

KeyCAPTCHA Only for Drupal 7 and Not maintained after 5 May 2012.

Draggable CAPTCHA Compatible with Drupal 9.4 and above.

Image CAPTCHA refresh Only for Drupal 7 and Not maintained after 9 November 2015.

Egglue Semantic CAPTCHA Only for Drupal 6 and Not maintained after 19 April 2017.

(Last update: 2023-06-29)
Back to top
Version Information

Branch 2.x: Actively maintained version with bug fixes and general improvements, e.g. twig templates). Drupal 9.4+ only! Upgrade path from 8.x-1.x, but please check your output and move custom template overwrites into twig.

Branch 8.x-1.x. Legacy branch and a mirror of the 2.x branch. Last version to support Drupal 8 is 8.x-1.10.

Branch 7.x-1.x: Drupal 7 only, replaced by Branch 8.x-1.x for Drupal 9 compatibility - no further development.

Back to top
Alternative modules

You could also consider spam filtering or hybrid solutions like:

The AntiSpam module, is the successor of the Akismet module, and it provides spam protection to your Drupal site using external antispam service like Akismet, TypePad and Defensio.

The spam module provides spam filtering and related tools

The honeypot module

Back to top

# data[].attributes.body.summary
Add challenge-response tests to user-facing forms on your site to protect against spambot submissions. Other CAPTCHA types are supported via additional modules.

# data[].attributes.body.value
Twig Tweak is a small module which provides a Twig extension with some useful functions and filters that can improve development experience.
✧ Cheat sheet

# data[].attributes.body.processed
Twig Tweak is a small module which provides a Twig extension with some useful functions and filters that can improve development experience.

✧ Cheat sheet

# data[].attributes.body.value
Provides basic API for image cropping. This module won't do much by itself. Users should pick one of UI modules that utilize this API.

<h3>Configuration</h3>

This is API module. In order to crop your images you need a UI module. There are currently two UI modules that use Crop API:

<ul>
  <li><a href="/project/image_widget_crop">Image widget crop</a></li>
<li><a href="/project/focal_point">Focal point</a></li>
</ul>

<h3>8.x-2.x branch information</h3>

8.x-2.x is a branch with support for the <a href="https://www.drupal.org/node/2863992">core media entity</a>. You should <strong>only</strong> update to this version if you are using core version. If you are still using contrib version of <a href="https://drupal.org/project/media_entity">Media entity</a> <strong>keep using 8.x-1.x versions</strong>. If you are not using Media entity at all, it should not make any difference.

We strongly suggest to test the upgrade in a testing environment before rolling it to production.

<h3>Technical details</h3>

Initial discussion can be found on <a href="https://www.drupal.org/node/2368945">manual crop issue queue</a>.

Crop API logo was created by <a href="http://drupal.org/u/woprrr">@woprrr</a>.

# data[].attributes.body.processed
Provides basic API for image cropping. This module won't do much by itself. Users should pick one of UI modules that utilize this API.

Configuration

This is API module. In order to crop your images you need a UI module. There are currently two UI modules that use Crop API:

Image widget crop

Focal point

8.x-2.x branch information

8.x-2.x is a branch with support for the core media entity. You should only update to this version if you are using core version. If you are still using contrib version of Media entity keep using 8.x-1.x versions. If you are not using Media entity at all, it should not make any difference.

We strongly suggest to test the upgrade in a testing environment before rolling it to production.

Technical details

Initial discussion can be found on manual crop issue queue.

Crop API logo was created by @woprrr.
Back to top

# data[].attributes.body.value
The Better Exposed Filters module replaces the Views' default single- or multi-select boxes with radio buttons or checkboxes, respectively. Description fields and Select All/None links can be added to exposed filters to make for a better user experience. Views Filters is a powerful tool to refine the results returned by a given view. When you expose a filter, you allow the user to interact with the view making it easy to build a customized, advanced search. For example, exposing the node type field as a filter lets your site visitor limit their search queries to just blog entries. Better Exposed Filters gives you greater control over the rendering of exposed filters. Why use this module? Because it provides a better user experience than the default option. Try telling a client that they should click on an option, then scroll to the next option and ctrl+click on it. Don't just click 'cause you'll lose your first selection. Oh, and ctrl+click again to unselect an option... Yeah, not user-friendly. People understand checkboxes and radio buttons. PLEASE RUN THIS ON A LOCAL/TEST ENVIRONMENT FIRST.
Branch support

7.1.x = Active development branch, all fixes need to land here first

7.0.x = Still supported, bug fixes mainly

6.0.x = Security fixes only

Integrations
Modules that provide additional BEF widgets or support for exposed filters in general:

Select2

Select Better Exposed Filters

Configurable Views Filter Block

Views Dependent Filters

What else can I do with BEF?
The BEF handbook page provides some basic recipes making exposed filters a much better user experience.

Add help text for each exposed filter

Tame long lists with scrollable checkbox/radio button lists or select all/none links

Provide instant feedback by updating the View using AJAX whenever an exposed filter is changed

Use the jQuery Slider widget for greater-than, less-than or in-between types of filters

If you've got any ideas not covered on the handbook page, add a feature request to the issue queue. You can also rate this module on DrupalModules.
Remembering mikeker - A note on module ownership & maintenance.
In November of 2017, the original author and long-time maintainer of the Better Exposed Filters module Mike Keran (mikeker) was diagnosed with inoperable cancer. He died on January 1st, 2018. Mike was an amazing human, and his death is a great loss to us all. He gave selflessly of his time to several communities including Drupal, and he brought his joy and passion with him everywhere. In honor of his memory, and in order to ensure that Mike’s contributions to Drupal are maintained, several members of the Seattle Drupal community have gotten together and offered to be the maintainers of BEF. We intend to advance the D8 branch where we can and to manage bug fixes and security patches for D7 as needed. Please be patient with us while we work to understand Mike’s intent and the code he left behind.

# data[].attributes.body.processed
The Better Exposed Filters module replaces the Views' default single- or multi-select boxes with radio buttons or checkboxes, respectively. Description fields and Select All/None links can be added to exposed filters to make for a better user experience.
Views Filters is a powerful tool to refine the results returned by a given view. When you expose a filter, you allow the user to interact with the view making it easy to build a customized, advanced search. For example, exposing the node type field as a filter lets your site visitor limit their search queries to just blog entries. Better Exposed Filters gives you greater control over the rendering of exposed filters.

Why use this module? Because it provides a better user experience than the default option. Try telling a client that they should click on an option, then scroll to the next option and ctrl+click on it. Don't just click 'cause you'll lose your first selection. Oh, and ctrl+click again to unselect an option... Yeah, not user-friendly.

People understand checkboxes and radio buttons.

PLEASE RUN THIS ON A LOCAL/TEST ENVIRONMENT FIRST.

Branch support

7.1.x = Active development branch, all fixes need to land here first

7.0.x = Still supported, bug fixes mainly

6.0.x = Security fixes only

Integrations

Modules that provide additional BEF widgets or support for exposed filters in general:

Select2

Select Better Exposed Filters

Configurable Views Filter Block

Views Dependent Filters

Back to top
What else can I do with BEF?

The BEF handbook page provides some basic recipes making exposed filters a much better user experience.

Add help text for each exposed filter

Tame long lists with scrollable checkbox/radio button lists or select all/none links

Provide instant feedback by updating the View using AJAX whenever an exposed filter is changed

Use the jQuery Slider widget for greater-than, less-than or in-between types of filters

If you've got any ideas not covered on the handbook page, add a feature request to the issue queue. You can also rate this module on DrupalModules.
Back to top
Remembering mikeker - A note on module ownership & maintenance.

In November of 2017, the original author and long-time maintainer of the Better Exposed Filters module Mike Keran (mikeker) was diagnosed with inoperable cancer. He died on January 1st, 2018. Mike was an amazing human, and his death is a great loss to us all. He gave selflessly of his time to several communities including Drupal, and he brought his joy and passion with him everywhere. In honor of his memory, and in order to ensure that Mike’s contributions to Drupal are maintained, several members of the Seattle Drupal community have gotten together and offered to be the maintainers of BEF. We intend to advance the D8 branch where we can and to manage bug fixes and security patches for D7 as needed. Please be patient with us while we work to understand Mike’s intent and the code he left behind.
Back to top

# data[].attributes.body.summary
Replaces Views' default single/multi-select boxes with radio buttons or checkboxes, respectively. You can add fields to the exposed filters to improve the user experience.

# data[].attributes.body.value
Summary
Linkit provides an autocomplete interface for internal and external linking in rich-text editors. Linkit supports nodes, users, taxonomy terms, files, comments and basic support for all types of entities that define a canonical link template.

Drupal core will soon provide link autocomplete suggestions in CKEditor similar to what this module does. Sites using or considering using Linkit should follow this core issue to evaluate whether they can use the core solution instead of Linkit. See feature differences below to compare what Linkit includes that will not initially be in Drupal core.

Features
Drupal core will provide link autocomplete suggestions in CKEditor. Below is a list of features included in Linkit which will not initially be in Drupal core.

Configurable autocomplete on link fields.

Ability to configure metadata (with token support) for autcomplete suggestions

Ability to control number of items shown

Ability to toggle published/unpublished entities in suggestions

IMCE integration

Pluggable, configurable, and alterable matchers

Pluggable, configurable, and alterable attributes

Form API element

Configuration

After installation, create a Linkit profile. The profile will contain information about which plugins to use. Profiles can be created at /admin/config/content/linkit.

Enable the Linkit plugin on the text format you want to use. Formats are found at admin/config/content/formats.

Related modules

To add link attributes (rel, target), see Editor Advanced link.

Version Status

7.0.x (Drupal 11; drops CKEditor 4 support): Active development

6.1.x (Drupal 10.1-10.4; note: a packaging issue caused 6.1.7 to allow installation with Drupal 10.5.x; do not use version 6.1.7!)

6.0.x (Drupal 9.5.x and 10.0): Supported until November 2024

8.x-5.x: No further development.

8.x-4.x: No further development.

7.x-3.x: Drupal 7 compatible. Maintenance only.

# data[].attributes.body.processed
Summary

Linkit provides an autocomplete interface for internal and external linking in rich-text editors. Linkit supports nodes, users, taxonomy terms, files, comments and basic support for all types of entities that define a canonical link template.

Drupal core will soon provide link autocomplete suggestions in CKEditor similar to what this module does. Sites using or considering using Linkit should follow this core issue to evaluate whether they can use the core solution instead of Linkit. See feature differences below to compare what Linkit includes that will not initially be in Drupal core.

Features Drupal core will provide link autocomplete suggestions in CKEditor. Below is a list of features included in Linkit which will not initially be in Drupal core. Configurable autocomplete on link fields. Ability to configure metadata (with token support) for autcomplete suggestions Ability to control number of items shown Ability to toggle published/unpublished entities in suggestions IMCE integration Pluggable, configurable, and alterable matchers Pluggable, configurable, and alterable attributes Form API element Configuration After installation, create a Linkit profile. The profile will contain information about which plugins to use. Profiles can be created at /admin/config/content/linkit. Enable the Linkit plugin on the text format you want to use. Formats are found at admin/config/content/formats. Related modules To add link attributes (rel, target), see Editor Advanced link. Version Status 7.0.x (Drupal 11; drops CKEditor 4 support): Active development 6.1.x (Drupal 10.1-10.4; note: a packaging issue caused 6.1.7 to allow installation with Drupal 10.5.x; do not use version 6.1.7!) 6.0.x (Drupal 9.5.x and 10.0): Supported until November 2024 8.x-5.x: No further development. 8.x-4.x: No further development. 7.x-3.x: Drupal 7 compatible. Maintenance only.
Back to top

# data[].attributes.body.summary
Linkit provides an autocomplete interface for internal and external linking in rich-text editors. Linkit supports nodes, users, taxonomy terms, files, comments and basic support for all types of entities that define a canonical link template.

# data[].attributes.field_issue_summary_template.value
Problem/motivation

Steps to reproduce

Go to...

Click on...

Observe [describe the expected and actual output]

Proposed resolution

This module uses Gitlab CI for automated testing of proposed code changes. To contribute code changes, create a merge request. Patch files will not trigger automated testing and are not sufficient for review.

# data[].attributes.field_issue_summary_template.processed
Problem/motivation

Steps to reproduce

Go to...

Click on...

Observe [describe the expected and actual output]

Proposed resolution

This module uses Gitlab CI for automated testing of proposed code changes. To contribute code changes, create a merge request. Patch files will not trigger automated testing and are not sufficient for review.
Back to top

# data[].attributes.body.value
What does it do?
This module provides a framework for easily creating searches on any entity known to Drupal, using any kind of search engine. For site administrators, it is a great alternative to other search solutions, since it already incorporates facetting support and the ability to use the Views module for displaying search results, filters, etc. Also, with the Apache Solr integration, a high-performance search engine is available for this module. Developers, on the other hand, will be impressed by the large flexibility and numerous ways of extension the module provides. Hence, the growing number of additional contrib modules, providing additional functionality or helping users customize some aspects of the search process.
Examples & Demo
The prime example of a site using this module is drupal.org itself – the Search API, along with the database backend and Views, is used to generate the issue queue listings.g
Note on security
In general, the Search API doesn't provide any kind of access restrictions (as this cannot be done on a generic level). It is therefore your responsibility to take care that only accessible items are indexed or results displayed (e.g., by using appropriate filters). There is, however, built-in support for node access checks via the Node access data alteration (q.v. for details). Also, the Search views module contains an option to do additional access checks on all entities in search views.
Additional modules
At the moment, this project contains, apart from the core API module, the following extension modules:
Search views
(Drupal 7 only) This module integrates the Search API with the Views module, allowing searches on any index to be created and viewed via Views. All of an entity's properties, as well as those of related entities (e.g. a node's author's name), are available as fields, filters and arguments for all indexed fields are available and sorts (as well as click sorts) can be created on any indexed single-valued field. Also some additional features, like linking the results to the entity, are available. For Drupal 8, Views integration is incorporated directly into the Search API module itself, it's not necessary to enable another module.
Search facets
(Drupal 7 only) This module provides integration with the popular Facet API module to allow facetting on any search executed with the Search API, be it a search page, a view or any other source. However, the feature is only supported by some backends – cf. the list of backends supporting the search_api_facets feature.
Database search
(Drupal 8 only) This module provides a ready-to-use search backend that indexes and searches content using Drupal's own database. It is mainly meant for testing purposes and for smaller sites, larger sites will usually want to use a more powerful backend (like Solr or Elasticsearch). Also provided is the "Database Search Defaults" module which provides a complete pre-configured content search when installed. For Drupal 7, this module is located in its own project.
Tutorials and screencasts
A number of tutorials and screencasts are linked in the handbook. Especially the latest screencasts from DrupalCon sessions might provide a good introduction to the module.
Other available backends and extensions
You can find a list of available extension modules in the handbook.
Requirements
Drupal 7 only: You will have to download and enable the Entity API module to use the Search API. To use the Views integration, you'll (of course) also need the Views module. For facets, you'll need the Facet API module (moved to Facets in Drupal 8). Furthermore, you'll need to enable at least one module that provides a search backend.
Information for developers
Extensive documentation for other developers, who might want to extend the framework's capabilities themselves, is available. It is partly included in the module itself (in search_api.api.php, in README.txt and directly in the relevant classes and interfaces) and partly in the online documentation (linked in the sidebar). If you are trying to implement some extension and are stuck, please don't hesitate to ask in the module's issue queue. Please also add your module to the list of extension modules once it's finished, if it is generally useful. All developers working in the Search API ecosystem are advised to keep an eye on [#1188562] and the module's change records for important updates. (Could also contain useful information for site builders.) Also, you can find us in the #search channel on Slack.
Sponsors
If you are interested in sponsoring a particular feature or new related module, please contact drunken_monkey. He is also available for consulting and custom development.

# data[].attributes.body.processed
Back to top
What does it do?

This module provides a framework for easily creating searches on any entity known to Drupal, using any kind of search engine. For site administrators, it is a great alternative to other search solutions, since it already incorporates facetting support and the ability to use the Views module for displaying search results, filters, etc. Also, with the Apache Solr integration, a high-performance search engine is available for this module.

Developers, on the other hand, will be impressed by the large flexibility and numerous ways of extension the module provides. Hence, the growing number of additional contrib modules, providing additional functionality or helping users customize some aspects of the search process.
Back to top
Examples & Demo

The prime example of a site using this module is drupal.org itself – the Search API, along with the database backend and Views, is used to generate the issue queue listings.g
Back to top
Note on security

In general, the Search API doesn't provide any kind of access restrictions (as this cannot be done on a generic level). It is therefore your responsibility to take care that only accessible items are indexed or results displayed (e.g., by using appropriate filters).
There is, however, built-in support for node access checks via the Node access data alteration (q.v. for details). Also, the Search views module contains an option to do additional access checks on all entities in search views.
Back to top
Additional modules

At the moment, this project contains, apart from the core API module, the following extension modules:

Search views

(Drupal 7 only)
This module integrates the Search API with the Views module, allowing searches on any index to be created and viewed via Views. All of an entity's properties, as well as those of related entities (e.g. a node's author's name), are available as fields, filters and arguments for all indexed fields are available and sorts (as well as click sorts) can be created on any indexed single-valued field. Also some additional features, like linking the results to the entity, are available.
For Drupal 8, Views integration is incorporated directly into the Search API module itself, it's not necessary to enable another module.

Search facets

(Drupal 7 only)
This module provides integration with the popular Facet API module to allow facetting on any search executed with the Search API, be it a search page, a view or any other source.
However, the feature is only supported by some backends – cf. the list of backends supporting the search_api_facets feature.

Database search

(Drupal 8 only)
This module provides a ready-to-use search backend that indexes and searches content using Drupal's own database. It is mainly meant for testing purposes and for smaller sites, larger sites will usually want to use a more powerful backend (like Solr or Elasticsearch). Also provided is the "Database Search Defaults" module which provides a complete pre-configured content search when installed.
For Drupal 7, this module is located in its own project.
Back to top
Tutorials and screencasts

A number of tutorials and screencasts are linked in the handbook. Especially the latest screencasts from DrupalCon sessions might provide a good introduction to the module.
Back to top
Other available backends and extensions

You can find a list of available extension modules in the handbook.
Back to top
Requirements

Drupal 7 only: You will have to download and enable the Entity API module to use the Search API.
To use the Views integration, you'll (of course) also need the Views module. For facets, you'll need the Facet API module (moved to Facets in Drupal 8).
Furthermore, you'll need to enable at least one module that provides a search backend.
Back to top
Information for developers

Extensive documentation for other developers, who might want to extend the framework's capabilities themselves, is available. It is partly included in the module itself (in search_api.api.php, in README.txt and directly in the relevant classes and interfaces) and partly in the online documentation (linked in the sidebar).
If you are trying to implement some extension and are stuck, please don't hesitate to ask in the module's issue queue. Please also add your module to the list of extension modules once it's finished, if it is generally useful.

All developers working in the Search API ecosystem are advised to keep an eye on [#1188562] and the module's change records for important updates. (Could also contain useful information for site builders.)
Also, you can find us in the #search channel on Slack.
Back to top
Sponsors

If you are interested in sponsoring a particular feature or new related module, please contact drunken_monkey. He is also available for consulting and custom development.
Back to top

# data[].attributes.body.summary
Go beyond core's search functionality for content, users, and other entities. Display search results and integrate with external search backends (Solr, ElasticSearch, Algolia) via additional modules.

# data[].attributes.field_issue_summary_template.value
Problem/Motivation

Steps to reproduce

Proposed resolution

Remaining tasks

# data[].attributes.field_issue_summary_template.processed
Problem/Motivation

Steps to reproduce

Proposed resolution

Remaining tasks
Back to top

# data[].attributes.body.value
Every webpage needs an automatic XML sitemap generator for SEO reasons. Sitemaps generated by this module adhere to the new Google standard regarding multilingual content by creating hreflang sitemaps and image sitemaps - Googlebots will thank you later. In addition to the default hreflang sitemaps, the module's API allows creating and publishing of custom sitemaps with arbitrary content, as well as submitting those sitemaps to search engines like Google. For instant indexation of content, the IndexNow protocol (supported by Bing and Yandex) has been implemented in 4.x (simple_sitemap_engines submodule).
Overview
The module generates multilingual sitemaps for entities, views and custom links. Out of the box it supports most of Drupal's content entity types including:

nodes

taxonomy terms

menu links

users

...

Contributed entity types like commerce products can be indexed as well. Various inclusion settings can be set for bundles and overridden on a per-entity basis. Sitemap generation can be altered through custom URL & sitemap generator plugins and hooks. Sitemaps can be automatically submitted to search engines, content changes can also be directly submitted via the IndexNow integration. Here is a sample of the markup it generates (press ctrl+u to view the source).
Functionality

Ability to create any type of sitemap via plugins

Ability to create a sitemap index of other sitemaps

Periodic submission to search engines

Submission to IndexNow on content changes

Views and views arguments support

XSL stylesheets for human visitors

Performance test script included

4.x

Module rewrite with developers/integrators in mind
4.x makes much greater use of Drupal's entity API dropping some of its very specific chaining API. See [#3219383]. See these posts for more details on the 4.x branch.
Should you use this over 3.x?
Yes. 3.x has is not supported.
Upgrade path
Please do not forget to run drush updb or update.php after every update. If you get an error, run core/rebuild.php before the above. You can upgrade from any 8.x-2.x or 8.x-3.x verison to 4.x. Keep in mind, the module APIs change between major releases.
Other
Similar modules: XML Sitemap was the de facto XML sitemap generator prior to Drupal 8 and a stable version for D8 has just been released. If you would like to say thanks and support the development of this module, a donation will be much appreciated.

# data[].attributes.body.processed
Every webpage needs an automatic XML sitemap generator for SEO reasons. Sitemaps generated by this module adhere to the new Google standard regarding multilingual content by creating hreflang sitemaps and image sitemaps - Googlebots will thank you later.

In addition to the default hreflang sitemaps, the module's API allows creating and publishing of custom sitemaps with arbitrary content, as well as submitting those sitemaps to search engines like Google. For instant indexation of content, the IndexNow protocol (supported by Bing and Yandex) has been implemented in 4.x (simple_sitemap_engines submodule).
Back to top
Overview

The module generates multilingual sitemaps for entities, views and custom links. Out of the box it supports most of Drupal's content entity types including:

nodes

taxonomy terms

menu links

users

...

Contributed entity types like commerce products can be indexed as well. Various inclusion settings can be set for bundles and overridden on a per-entity basis. Sitemap generation can be altered through custom URL & sitemap generator plugins and hooks. Sitemaps can be automatically submitted to search engines, content changes can also be directly submitted via the IndexNow integration.

Here is a sample of the markup it generates (press ctrl+u to view the source).

Functionality

Ability to create any type of sitemap via plugins

Ability to create a sitemap index of other sitemaps

Periodic submission to search engines

Submission to IndexNow on content changes

Views and views arguments support

XSL stylesheets for human visitors

Performance test script included

4.x

Module rewrite with developers/integrators in mind

4.x makes much greater use of Drupal's entity API dropping some of its very specific chaining API. See [#3219383]. See these posts for more details on the 4.x branch.

Should you use this over 3.x?

Yes. 3.x has is not supported.
Back to top
Upgrade path

Please do not forget to run drush updb or update.php after every update. If you get an error, run core/rebuild.php before the above.

You can upgrade from any 8.x-2.x or 8.x-3.x verison to 4.x. Keep in mind, the module APIs change between major releases.
Back to top
Other

Similar modules: XML Sitemap was the de facto XML sitemap generator prior to Drupal 8 and a stable version for D8 has just been released.

If you would like to say thanks and support the development of this module, a donation will be much appreciated.
Back to top

# data[].attributes.body.summary
Generates standard-compliant hreflang XML sitemaps to enhance your site's SEO, notifies search engines of website changes via IndexNow and sitemap ping protocols, and provides a framework for developing other sitemap types.

# data[].attributes.body.value
Supported versions: 1.x / 3.x
Apologies! There are problems with the 2.x branch - we strongly recommend not using it. This is currently cleaned up in [#3401656]. Help is appreciated. If you are on 1.x, you can safely upgrade to 3.x, IF no other contrib module still requires 1.x only. In this case open an issue on that project, see [#3407711]. If you are on 2.x, you can either downgrade to 1.x, or upgrade to 3.x, IF no other contrib module still requires 1.x only. In this case open an issue on that project, see [#3407711] Reporting back to [#3407407] is appreciated. (Note that the you WILL lose all the non-quality-assured features from 2.x. To any complainers: Feel free to write or pay a test for your favorite feature, or maintain a fork with lower maintenance standard yourself.)
Module authors, please update requirements
See [#3407711].
About IEF
Provides a widget for inline management (creation, modification, removal) of referenced entities. The primary use case is the parent -> children one (product display -> products, order -> line items, etc.), where the child entities are never managed outside the parent form. Existing entities can also be referenced. Supports commerce_product_reference, commerce_line_item_reference and entityreference fields. Requires integration code to be provided for each entity type that can be referenced. Supports the commerce_product (including Commerce AutoSKU integration) and commerce_line_item, node, taxonomy_term entity types out of the box. Integration for other entity types has not yet been written, patches welcome. See the 7.x README or the 8.x README for information about getting started and integrating other entity types. This module was covered on Lullabot Module Monday and Commerce Module Tuesday. Requires the Entity API module. Requires Drupal 7.15 or newer.

# data[].attributes.body.processed
Back to top
Supported versions: 1.x / 3.x

Apologies! There are problems with the 2.x branch - we strongly recommend not using it. This is currently cleaned up in [#3401656]. Help is appreciated.

If you are on 1.x, you can safely upgrade to 3.x, IF no other contrib module still requires 1.x only. In this case open an issue on that project, see [#3407711].

If you are on 2.x, you can either downgrade to 1.x, or upgrade to 3.x, IF no other contrib module still requires 1.x only. In this case open an issue on that project, see [#3407711]
Reporting back to [#3407407] is appreciated. (Note that the you WILL lose all the non-quality-assured features from 2.x. To any complainers: Feel free to write or pay a test for your favorite feature, or maintain a fork with lower maintenance standard yourself.)

Module authors, please update requirements

See [#3407711].
Back to top
About IEF

Provides a widget for inline management (creation, modification, removal) of referenced entities.
The primary use case is the parent -> children one (product display -> products, order -> line items, etc.), where the child entities are never managed outside the parent form.
Existing entities can also be referenced.

Supports commerce_product_reference, commerce_line_item_reference and entityreference fields.
Requires integration code to be provided for each entity type that can be referenced.
Supports the commerce_product (including Commerce AutoSKU integration) and commerce_line_item, node, taxonomy_term entity types out of the box.
Integration for other entity types has not yet been written, patches welcome.

See the 7.x README or the 8.x README for information about getting started and integrating other entity types.

This module was covered on Lullabot Module Monday and Commerce Module Tuesday.

Requires the Entity API module.
Requires Drupal 7.15 or newer.
Back to top

# data[].attributes.body.summary
Supported Versions
A 2.x Version has been released erroneously, containing multiple regressions and unreviewed commits. This is currently cleaned up in [#]. Help is appreciated.
About IEF
Provides a widget for inline management (creation, modification, removal) of referenced entities. The primary use case is the parent -> children one (product display -> products, order -> line items, etc.), where the child entities are never managed outside the parent form. Existing entities can also be referenced. Supports commerce_product_reference, commerce_line_item_reference and entityreference fields. Requires integration code to be provided for each entity type that can be referenced. Supports the commerce_product (including Commerce AutoSKU integration) and commerce_line_item, node, taxonomy_term entity types out of the box. Integration for other entity types has not yet been written, patches welcome. See the README for information about getting started and integrating other entity types. This module was covered on Lullabot Module Monday and Commerce Module Tuesday. Requires the Entity API module. Requires Drupal 7.15 or newer.

# data[].attributes.body.value
Enhances the link Dialog in CKEditor. Allows to define the following attributes:

title

class

id

target

rel

aria-label

Installation and configuration

CKEditor 5 (Drupal 10 / Drupal 11)
Install as usual then:

go to the "Text formats and editor" admin page (admin/config/content/formats)

configure your text format

select the additional attributes you want for this format in the "Enabled attributes" filter settings

Branches

2.3.x Support for CKEditor 45 (Drupal 10.5+ / Drupal 11.2+)

2.2.x Support for CKEditor 44 (Drupal 10.3 / 10.4 / 11.0 / 11.1)

Recommended

Editor File upload to be able to create link to uploaded files easily.

Linkit provides an easy interface for internal and external linking with wysiwyg editors by using an autocomplete field.

CKEditor Entity Link is an alternative to Linkit that also provides an easy interface for internal linking within the editor.

# data[].attributes.body.processed
Enhances the link Dialog in CKEditor.
Allows to define the following attributes:

title

class

id

target

rel

aria-label

Installation and configuration

CKEditor 5 (Drupal 10 / Drupal 11)

Install as usual then:

go to the "Text formats and editor" admin page (admin/config/content/formats)

configure your text format

select the additional attributes you want for this format in the "Enabled attributes" filter settings

Branches

2.3.x Support for CKEditor 45 (Drupal 10.5+ / Drupal 11.2+)

2.2.x Support for CKEditor 44 (Drupal 10.3 / 10.4 / 11.0 / 11.1)

Back to top
Recommended

Editor File upload to be able to create link to uploaded files easily.

Linkit provides an easy interface for internal and external linking with wysiwyg editors by using an autocomplete field.

CKEditor Entity Link is an alternative to Linkit that also provides an easy interface for internal linking within the editor.

Back to top

# data[].attributes.body.summary
Enhances the link Dialog in CKEditor by allowing the following attributes to be defined: title, class, id, target, rel and more.

# data[].attributes.body.value
Drupal 8 includes jQuery UI in core, however it is no longer actively maintained and has been marked deprecated. This module provides the jQuery UI Datepicker library for any themes and modules that require it.

jQuery UI Datepicker documentation

jQuery UI Datepicker API documentation

Caution: jQuery UI was deprecated from core because it is no longer actively maintained, and has been marked “End of Life” by the OpenJS Foundation. It is not recommended to depend on jQuery UI in your own code, and instead to select a replacement solution as soon as possible.

Instructions

Install this module and the jQuery UI module.

Change any references in your theme or module from core/jquery.ui.datepicker to jquery_ui_datepicker/datepicker

Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Autocomplete

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Dialog

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Resizable

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Slider

jQuery UI Spinner

jQuery UI Tooltip

# data[].attributes.body.processed
Drupal 8 includes jQuery UI in core, however it is no longer actively
maintained and has been marked deprecated. This module provides the
jQuery UI Datepicker library for any themes and modules that require it.

jQuery UI Datepicker documentation

jQuery UI Datepicker API documentation

Caution: jQuery UI was deprecated from core because it is no longer
actively maintained, and has been marked “End of Life” by the OpenJS
Foundation. It is not recommended to depend on jQuery UI in your own
code, and instead to select a replacement solution as soon as possible.

Instructions

Install this module and the jQuery UI module.

Change any references in your theme or module from
core/jquery.ui.datepicker to jquery_ui_datepicker/datepicker

Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Autocomplete

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Dialog

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Resizable

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Slider

jQuery UI Spinner

jQuery UI Tooltip

# data[].attributes.body.value
Provides functionality for storing, validating and displaying international postal addresses. The Drupal 8 heir to the addressfield module, powered by the commerceguys/addressing library.
Features:

Address field type and form element

Country field type and form element

Zone field type and form element

Address formats for 200 countries

Subdivisions (administrative areas, localities, dependent localities) for 60 countries

Subdivision translations for all of the parent country's (i.e Canada, Switzerland) official languages.

Country list with translations for over 200 locales, provided by CLDR

Zones are territorial groupings often used for shipping or tax purposes. They can match countries, subdivisions (states/provinces/municipalities), postal codes. For example: "California and Nevada", "France and Monaco", "Germany and a set of Austrian postal codes".
Address data model
Each address can have the following properties:

Given name (First name)

Additional name (Middle name / Patronymic)

Family name (Last name)

Organization

Address line 1

Address line 2

Address line 3 (2.0.x only)

Postal code

Sorting code

Dependent Locality (Neighborhood / Suburb)

Locality (City)

Administrative area (State / Province)

Country

Property names follow the OASIS eXtensible Address Language (xAL) standard.
Installation
Since the module requires an external library, Composer or Ludwig must be used.
Composer
If your site is managed via Composer, use Composer to download the module, which will also download the required library: composer require "drupal/address ^2.0" ^2.0 downloads the latest release, use 2.0.x-dev to get the -dev release instead. Use composer update drupal/address --with-dependencies to update to a new release.
Ludwig
Otherwise, use Ludwig which will allow you to manage the required libraries without Composer: Ludwig Installation and Usage Maintenance of Ludwig managed modules Note that Composer is recommended whenever possible.

# data[].attributes.body.processed
Provides functionality for storing, validating and displaying international postal addresses.

The Drupal 8 heir to the addressfield module, powered by the commerceguys/addressing library.
Back to top
Features:

Address field type and form element

Country field type and form element

Zone field type and form element

Address formats for 200 countries

Subdivisions (administrative areas, localities, dependent localities) for 60 countries

Subdivision translations for all of the parent country's (i.e Canada, Switzerland) official languages.

Country list with translations for over 200 locales, provided by CLDR

Zones are territorial groupings often used for shipping or tax purposes. They can match countries, subdivisions (states/provinces/municipalities), postal codes. For example: "California and Nevada", "France and Monaco", "Germany and a set of Austrian postal codes".
Back to top
Address data model

Each address can have the following properties:

Given name (First name)

Additional name (Middle name / Patronymic)

Family name (Last name)

Organization

Address line 1

Address line 2

Address line 3 (2.0.x only)

Postal code

Sorting code

Dependent Locality (Neighborhood / Suburb)

Locality (City)

Administrative area (State / Province)

Country

Property names follow the OASIS eXtensible Address Language (xAL) standard.
Back to top
Installation

Since the module requires an external library, Composer or Ludwig must be used.

Composer

If your site is managed via Composer, use Composer to download the module, which will also download the required library:

composer require "drupal/address ^2.0"

^2.0 downloads the latest release, use 2.0.x-dev to get the -dev release instead.
Use composer update drupal/address --with-dependencies to update to a new release.

Ludwig

Otherwise, use Ludwig which will allow you to manage the required libraries without Composer:

Ludwig Installation and Usage
Maintenance of Ludwig managed modules

Note that Composer is recommended whenever possible.
Back to top

# data[].attributes.body.summary
Provides functionality for storing, validating and displaying international postal addresses.

# data[].relationships.field_project_images.data[].meta.alt
Envelope with a Druplicon stamp and lines for addresses

# data[].attributes.body.value
Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans. reCAPTCHA is built for security. Armed with state of the art technology, it always stays at the forefront of spam and abuse fighting trends. reCAPTCHA is on guard for you, so you can rest easy.
Type of reCAPTCHA supported:

reCAPTCHA V2

Invisible reCAPTCHA (work in progress)

Requirements

reCAPTCHA depends on the CAPTCHA module.

PHP 5.5 or higher.

Alternatives

FriendlyCaptcha provides a European alternative and also has a free open source client included, if you don't need a subscription.

# data[].attributes.body.processed
Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.

reCAPTCHA is built for security. Armed with state of the art technology, it always stays at the forefront of spam and abuse fighting trends. reCAPTCHA is on guard for you, so you can rest easy.

Type of reCAPTCHA supported:

reCAPTCHA V2

Invisible reCAPTCHA (work in progress)

Requirements

reCAPTCHA depends on the CAPTCHA module.

PHP 5.5 or higher.

Alternatives

FriendlyCaptcha provides a European alternative and also has a free open source client included, if you don't need a subscription.

# data[].attributes.body.summary
Uses the reCAPTCHA web service to improve the CAPTCHA system. Tough on bots. Easy on humans.

# data[].attributes.body.value
Honeypot uses both the honeypot and timestamp methods of deterring spam bots from completing forms on your Drupal site (<a href="https://www.jeffgeerling.com/blogs/jeff-geerling/introducing-honeypot-form-spam">read more here</a>). These methods are effective against many spam bots, and are not as intrusive as CAPTCHAs or other methods which <a href="https://www.youtube.com/watch?v=FPOezLL398U">punish the user</a> [YouTube].

The module currently supports enabling for all forms on the site, or particular forms like user registration or password reset forms, webforms, contact forms, node forms, and comment forms.

<h2>Configuration</h2>

All settings for this module are on the Honeypot configuration page, under the Configuration section, in the Content authoring settings. You can visit the configuration page directly at <code>/admin/config/content/honeypot</code>. Read more about what all the settings mean in the <a href="https://www.drupal.org/docs/contributed-modules/honeypot">Honeypot documentation</a>.

<h2>Use in Your Own Forms and Customizations</h2>

If you want to add honeypot to your own forms, or to any form through your own module's hook_form_alter's, you can simply place the following function call inside your form builder function (or inside a <code>hook_form_alter()</code>):
<?php
  \Drupal::service('honeypot')->addFormProtection($form, $form_state, ['honeypot', 'time_restriction']);
?>

Note that you can enable or disable either the honeypot field, or the time restriction on the form by including or not including the option in the array.

You can also use <a href="https://git.drupalcode.org/project/honeypot/-/blob/2.1.x/honeypot.api.php">Honeypot's API</a> to modify the time delay for forms, add or remove protections for certain forms, etc.

<h2>Success Stories</h2>

Many people have reported dramatic reductions in spam when using this module; some of their stories can be found here: <a href="https://www.drupal.org/docs/contributed-modules/honeypot/honeypot-success-stories">Honeypot success stories</a>.

<h2>Further Reading</h2>

<ul>
  <li><a href="https://www.jeffgeerling.com/articles/web-design/2011/preventing-form-spam">Preventing Form Spam</a> - article about different spam prevention techniques.</li>
  <li><a href="https://www.jeffgeerling.com/blogs/jeff-geerling/introducing-honeypot-form-spam">Introducing the Honeypot form spam protection module for Drupal</a></li>
</ul>

<h2>Related modules</h2>

<ul>
<li><a href="https://www.drupal.org/project/honeypot_entityform">Honeypot Entityform</a> - Adds entityform integration</li>
</ul>

<h3>Alternative modules</h3>

There are many spam-protection modules on drupal.org, some of which have more or less robust methods of dealing with form spam. Some of the most used and recommended include:

<ul>
<li><a href="https://www.drupal.org/project/captcha">CAPTCHA</a> - A simple image-based CAPTCHA builder.</li>
<li><a href="https://www.drupal.org/project/recaptcha">reCAPTCHA</a> - Implements <a href="http://www.google.com/recaptcha">reCAPTCHA</a> for image-based CAPTCHAs.</li>
<li><a href="https://www.drupal.org/project/antibot">AntiBot</a> A JavaScript based strategy for eliminating form submissions from bots.
<li><a href="https://www.drupal.org/project/botcha">BOTCHA</a> - (Drupal 7) Has many different bot-defeating recipes.</li>
<li><a href="https://www.drupal.org/project/hidden_captcha">Hidden CAPTCHA</a> - (Drupal 7) Similar to this module in it's effectiveness.</li>
</ul>

<em>Module created by <a href="https://www.jeffgeerling.com">Jeff Geerling</a></em>

# data[].attributes.body.processed
Honeypot uses both the honeypot and timestamp methods of deterring spam bots from completing forms on your Drupal site (read more here). These methods are effective against many spam bots, and are not as intrusive as CAPTCHAs or other methods which punish the user [YouTube].

The module currently supports enabling for all forms on the site, or particular forms like user registration or password reset forms, webforms, contact forms, node forms, and comment forms.
Back to top
Configuration

All settings for this module are on the Honeypot configuration page, under the Configuration section, in the Content authoring settings. You can visit the configuration page directly at /admin/config/content/honeypot. Read more about what all the settings mean in the Honeypot documentation.
Back to top
Use in Your Own Forms and Customizations

If you want to add honeypot to your own forms, or to any form through your own module's hook_form_alter's, you can simply place the following function call inside your form builder function (or inside a hook_form_alter()):
<?php
\Drupal::service('honeypot')->addFormProtection($form, $form_state, ['honeypot', 'time_restriction']);
?>

Note that you can enable or disable either the honeypot field, or the time restriction on the form by including or not including the option in the array.

You can also use Honeypot's API to modify the time delay for forms, add or remove protections for certain forms, etc.
Back to top
Success Stories

Many people have reported dramatic reductions in spam when using this module; some of their stories can be found here: Honeypot success stories.
Back to top
Further Reading

Preventing Form Spam - article about different spam prevention techniques.

Introducing the Honeypot form spam protection module for Drupal

Back to top
Related modules

Honeypot Entityform - Adds entityform integration

Alternative modules

There are many spam-protection modules on drupal.org, some of which have more or less robust methods of dealing with form spam. Some of the most used and recommended include:

CAPTCHA - A simple image-based CAPTCHA builder.

reCAPTCHA - Implements reCAPTCHA for image-based CAPTCHAs.

AntiBot A JavaScript based strategy for eliminating form submissions from bots.

BOTCHA - (Drupal 7) Has many different bot-defeating recipes.

Hidden CAPTCHA - (Drupal 7) Similar to this module in it's effectiveness.

Module created by Jeff Geerling
Back to top

# data[].attributes.body.summary
Uses both the honeypot and timestamp strategies to deter spam bots from completing forms on your site. These methods are effective and not as intrusive as CAPTCHAs or other schemes that punish the user.

# data[].attributes.body.value
Provides an Administrative UI and Developers API for managing the used mail backend/plugin.

The module is ready to be used in Drupal 8, there are no known issues.

Allows to use different backends for formatting and sending e-mails by default, per module and per mail key. Additionally, a theme can be configured that is used for sent mails. In Drupal 7, that must be enabled for each template, in Drupal 8, it works reliably for any template being rendered while building and sending e-mails.

<h3 id="administrative-ui">Administrative UI</h3>
<p>The administrative interface is at <code>admin/config/system/mailsystem</code> (Drupal 8) or<code>admin/settings/mailsystem</code> (Drupal 7).

<h3 id="used-by">Used by:</h3>

Any mail backend can be used and configured with this module. In Drupal 8, this has specifically been tested with <a href="https://drupal.org/project/swiftmailer">Swiftmailer</a>.

For Drupal 7, the following modules are commonly used to send HTML mails:
<ul>
  <li><a href="http://drupal.org/project/htmlmail">HTML Mail 7.x</a></li>
  <li><a href="http://drupal.org/project/mimemail">Mime Mail 7.x-1.x-dev</a></li>
  <li><a href="http://drupal.org/project/postmark">Postmark 7.x-1.x</a></li>
</ul>

<h3 id="developers-api">Developers API</h3>

See <a href="https://www.drupal.org/node/2733103">the documentation page</a>

<h3 id="references">References Drupal 7</h3>
<dl>
  <dt><strong><a href="http://api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7"><code>drupal_mail_system()</code> API documentation</a></strong>:</dt>
  <dd>
    <p><a href="http://api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7">api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7</a></p>
  </dd>
  <dt><strong><a href="http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface/7"><code>MailSystemInterface</code> API documentation</a></strong>:</dt>
  <dd>
    <p><a href="http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface/7">http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface/7</a></p>
  </dd>
  <dt><strong><a href="http://drupal.org/node/900794">Creating HTML formatted mails in Drupal 7</a></strong>:</dt>
  <dd>
    <p><a href="http://drupal.org/node/900794">drupal.org/node/900794</a></p>
  </dd>
</dl>

# data[].attributes.body.processed
Provides an Administrative UI and Developers API for managing the used mail backend/plugin.

The module is ready to be used in Drupal 8, there are no known issues.

Allows to use different backends for formatting and sending e-mails by default, per module and per mail key. Additionally, a theme can be configured that is used for sent mails. In Drupal 7, that must be enabled for each template, in Drupal 8, it works reliably for any template being rendered while building and sending e-mails.

Administrative UI

The administrative interface is at admin/config/system/mailsystem (Drupal 8) oradmin/settings/mailsystem (Drupal 7).

Used by:

Any mail backend can be used and configured with this module. In Drupal 8, this has specifically been tested with Swiftmailer.

For Drupal 7, the following modules are commonly used to send HTML mails:

HTML Mail 7.x

Mime Mail 7.x-1.x-dev

Postmark 7.x-1.x

Developers API

See the documentation page

References Drupal 7

drupal_mail_system() API documentation:

api.drupal.org/api/drupal/includes--mail.inc/function/drupal_mail_system/7

MailSystemInterface API documentation:

http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystemInterface/7

Creating HTML formatted mails in Drupal 7:

drupal.org/node/900794

Back to top

# data[].attributes.body.value
Drupal 8 includes jQuery UI in core, however it is no longer actively maintained and has been marked deprecated. This module provides the jQuery UI Slider library for any themes and modules that require it.

jQuery UI Slider documentation

jQuery UI Slider API documentation

Caution: jQuery UI was deprecated from core because it is no longer actively maintained, and has been marked “End of Life” by the OpenJS Foundation. It is not recommended to depend on jQuery UI in your own code, and instead to select a replacement solution as soon as possible.

Instructions

Install this module and the jQuery UI module.

Change any references in your theme or module from core/jquery.ui.slider to jquery_ui_slider/slider

Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Autocomplete

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Datepicker

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Resizable

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Spinner

jQuery UI Tooltip

# data[].attributes.body.processed
Drupal 8 includes jQuery UI in core, however it is no longer actively maintained and has been marked deprecated. This module provides the jQuery UI Slider library for any themes and modules that require it.

jQuery UI Slider documentation

jQuery UI Slider API documentation

Caution: jQuery UI was deprecated from core because it is no longer actively maintained, and has been marked “End of Life” by the OpenJS Foundation. It is not recommended to depend on jQuery UI in your own code, and instead to select a replacement solution as soon as possible.

Instructions

Install this module and the jQuery UI module.

Change any references in your theme or module from core/jquery.ui.slider to jquery_ui_slider/slider

Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Autocomplete

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Datepicker

jQuery UI Dialog

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Resizable

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Spinner

jQuery UI Tooltip

# data[].relationships.field_project_images.data[].meta.alt
jquery ui logo surrounded by slider controls

# data[].attributes.body.value
Drupal 8 includes jQuery UI in core, however it is no longer actively maintained and has been marked deprecated. This module provides the jQuery UI Touch Punch library for any themes and modules that require it.

jQuery UI Touch Punch documentation

jQuery UI Touch Punch API documentation

Caution: jQuery UI was deprecated from core because it is no longer actively maintained, and has been marked “End of Life” by the OpenJS Foundation. It is not recommended to depend on jQuery UI in your own code, and instead to select a replacement solution as soon as possible.

Installation
The module can be installed via the standard Drupal installation process.
Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Slider

jQuery UI Spinner

jQuery UI Date Picker

Maintainers
This module is maintained by developers at Morpht. For more information on the company and our offerings, see morpht.com.

# data[].attributes.body.processed
Drupal 8 includes jQuery UI in core, however it is no longer actively
maintained and has been marked deprecated. This module provides the
jQuery UI Touch Punch library for any themes and modules that require it.

jQuery UI Touch Punch documentation

jQuery UI Touch Punch API
documentation

Caution: jQuery UI was deprecated from core because it is no longer
actively maintained, and has been marked “End of Life” by the OpenJS
Foundation. It is not recommended to depend on jQuery UI in your own
code, and instead to select a replacement solution as soon as possible.

Installation

The module can be installed via the standard Drupal installation process.

Requirements

jQuery UI

Related modules

jQuery UI Accordion

jQuery UI Button

jQuery UI Checkboxradio

jQuery UI Controlgroup

jQuery UI Draggable

jQuery UI Droppable

jQuery UI Effects

jQuery UI Menu

jQuery UI Progressbar

jQuery UI Selectable

jQuery UI Selectmenu

jQuery UI Slider

jQuery UI Spinner

jQuery UI Date Picker

Maintainers

This module is maintained by developers at Morpht. For more information on the company and our offerings, see morpht.com.
Back to top

# data[].attributes.body.value
Goal of this module is to provide a generic entity browser/picker/selector. It can be used in any context where one needs to select few entities and do something with them.

Possible use cases:
<ul>
<li>Powerful entity reference widget</li>
<li>Embedding entities into wysiwyg.</li>
<li>You name it!</li>
</ul>

<h2>Documentation</h2>

Please feel free to contribute to the <a href="https://www.drupal.org/docs/8/modules/entity-browser">documentation</a>.

<h2>Examples</h2>

Entity browser comes with an example module that can be used as a starting point. 

There is also <a href="http://drupal.org/project/file_browser">File entity browser</a> module that creates a nice widget that allows you to upload files and select from file library. It uses standard entity browser plugins and does some tweaks and theming on top of that. 

<h2>Integrations</h2>

Entity browser integrates with <a href="http://drupal.org/project/inline_entity_form">Inline entity form</a>. See <a href="https://www.drupal.org/docs/8/modules/entity-browser/inline-entity-form">documentation</a> for more info.

<h2>List of available plugins</h2>

<h3>Displays</h3>
<ul>
  <li>Standalone (part of main module)</li>
  <li>iFrame (part of main module)</li>
  <li>Modal (part of main module)</li>
</ul>

<h3>Widget selectors</h3>
<ul>
  <li>Dropdown (part of main module)</li>
  <li>Tabs (part of main module)</li>
  <li>Single widget (part of main module)</li>
</ul>

<h3>Widgets</h3>
<ul>
  <li>File upload (part of main module)</li>
  <li><a href="http://drupal.org/project/media_entity_image">Media entity image upload</a></li>
  <li>Views (part of main module)</li>
  <li><a href="http://drupal.org/project/dropzonejs">DropzoneJS file upload</a></li>
  <li><a href="http://drupal.org/project/dropzonejs">DropzoneJS media entity image upload</a></li>
  <li>Entity form (submodule in main repo)</li>
  <li><a href="https://www.drupal.org/project/media_elvis">Woodwing Elvis DAM</a></li>
  <li><a href="https://www.drupal.org/project/bynder">Bynder</a></li>
</ul>

<h3>Selection displays</h3>
<ul>
  <li>No display (part of main module)</li>
  <li>Multi-step display (part of main module)</li>
</ul>

<h2>Modules that use Entity browser</h2>

<ul>
  <li><a href="http://drupal.org/project/file_browser">File entity browser</a></li>
  <li><a href="http://drupal.org/project/content_browser">Content browser</a></li>
  <li><a href="https://www.drupal.org/project/media_entity_browser">Media entity browser</a></li>
  <li><a href="https://www.drupal.org/project/media">Media</a></li>
  <li><a href="https://www.drupal.org/project/entity_browser_enhanced">Entity browser enhanced</a></li>
</ul>


<h2>Development</h2>

Check <a href="https://www.drupal.org/node/2576683">roadmap meta issue</a> in order to see what current focus of development is. 

Our fancy logo was created by <a href="https://www.drupal.org/u/artnetik">David Ličen</a>.

<div class="messages warning"><strong>The previous Drupal 7 module has been moved to <a href="https://drupal.org/project/entity_type_browser">Entity Type Browser module</a></strong></div>

# data[].attributes.body.processed
Goal of this module is to provide a generic entity browser/picker/selector. It can be used in any context where one needs to select few entities and do something with them.

Possible use cases:

Powerful entity reference widget

Embedding entities into wysiwyg.

You name it!

Back to top
Documentation

Please feel free to contribute to the documentation.
Back to top
Examples

Entity browser comes with an example module that can be used as a starting point.

There is also File entity browser module that creates a nice widget that allows you to upload files and select from file library. It uses standard entity browser plugins and does some tweaks and theming on top of that.
Back to top
Integrations

Entity browser integrates with Inline entity form. See documentation for more info.
Back to top
List of available plugins

Displays

Standalone (part of main module)

iFrame (part of main module)

Modal (part of main module)

Widget selectors

Dropdown (part of main module)

Tabs (part of main module)

Single widget (part of main module)

Widgets

File upload (part of main module)

Media entity image upload

Views (part of main module)

DropzoneJS file upload

DropzoneJS media entity image upload

Entity form (submodule in main repo)

Woodwing Elvis DAM

Bynder

Selection displays

No display (part of main module)

Multi-step display (part of main module)

Back to top
Modules that use Entity browser

File entity browser

Content browser

Media entity browser

Media

Entity browser enhanced

Back to top
Development

Check roadmap meta issue in order to see what current focus of development is.

Our fancy logo was created by David Ličen.

The previous Drupal 7 module has been moved to Entity Type Browser module
Back to top

# data[].attributes.body.value
Introduction

Devel module contains helper functions and pages for Drupal developers and inquisitive admins:

A block and toolbar for quickly accessing devel pages

A menu tab added to entities to give access to internal entity properties

Urls created to view the internal entity properties even when there is no menu tab, for example /devel/paragraph/n

Debug functions for inspecting a variable such as dpm($variable)

Debug a SQL query dpq($query or print a backtrace ddebug_backtrace()

A block for masquerading as other users (useful for testing)

A mail-system class which redirects outbound email to files

Drush commands such as fn-hook, fn-event, token, uuid, and devel-services

Devel Generate. Bulk creates nodes, users, comment, taxonomy, media, menus, block content for development. Has Drush integration.

This module is safe to use on a production site. Just be sure to only grant access development information permission to developers.

Collaboration

https://gitlab.com/drupalspoons/devel is our workplace for code, MRs, and CI.

Create a personal fork in order to make an MR.

We plan to move bck to drupal.org once it uses Gitlab for issues.

We auto-push back to git.drupalcode.org in order to keep Security Team coverage and packages.drupal.org integration.

Chat with us at #devel on Drupal Slack.

Local Development

DDEV is configured with https://github.com/ddev/ddev-drupal-contrib for for easy local development, test running, etc.

Version Compatibility

Devel version | Drupal core | PHP | Drush
5.2+ | 10+ | 8.1+ | 12+
5.0, 5.1 | 9,10 | 8.1+ | 11+
4.x | 8.9+,9 | 7.2+ | 9+
8.x-2.x | 8.x | 7.0+ | 8+

Maintainers

See https://gitlab.com/groups/drupaladmins/devel/-/group_members.

# data[].attributes.body.processed
Introduction

Devel module contains helper functions and pages for Drupal developers and inquisitive admins:

A block and toolbar for quickly accessing devel pages

A menu tab added to entities to give access to internal entity properties

Urls created to view the internal entity properties even when there is no menu tab, for example /devel/paragraph/n

Debug functions for inspecting a variable such as dpm($variable)

Debug a SQL query dpq($query or print a backtrace ddebug_backtrace()

A block for masquerading as other users (useful for testing)

A mail-system class which redirects outbound email to files

Drush commands such as fn-hook, fn-event, token, uuid, and devel-services

Devel Generate. Bulk creates nodes, users, comment, taxonomy, media, menus, block content for development. Has Drush integration.

This module is safe to use on a production site. Just be sure to only grant access development information permission to developers.

Collaboration

https://gitlab.com/drupalspoons/devel is our workplace for code, MRs, and CI.

Create a personal fork in order to make an MR.

We plan to move bck to drupal.org once it uses Gitlab for issues.

We auto-push back to git.drupalcode.org in order to keep Security Team coverage and packages.drupal.org integration.

Chat with us at #devel on Drupal Slack.

Local Development

DDEV is configured with https://github.com/ddev/ddev-drupal-contrib for for easy local development, test running, etc.

Version Compatibility

Devel version | Drupal core | PHP | Drush
5.2+ | 10+ | 8.1+ | 12+
5.0, 5.1 | 9,10 | 8.1+ | 11+
4.x | 8.9+,9 | 7.2+ | 9+
8.x-2.x | 8.x | 7.0+ | 8+

Maintainers

See https://gitlab.com/groups/drupaladmins/devel/-/group_members.

Back to top

# data[].attributes.body.value
This module extends the entity API of Drupal core in order to provide a unified way to deal with entities and their properties. Additionally, it provides an entity CRUD controller, which helps simplifying the creation of new entity types.
Requirements

Drupal 7.2 or later; suggested Drupal >= 7.15

Documentation
You can find documentation in the handbooks. Also check the README and the provided API docs in entity.api.php.
Overview

For site-builders
This is an API module, so it doesn't provide any end-user features. However, it provides some entity generic functionality to other modules that site-builders may leverage:

A Views display plugin and field to render or link to any entity (by view-mode)

A CTools content plugin to render any entity (by view-mode)

It ships with the Entity tokens module which makes sure there are tokens for most entity properties and fields, i.e. it provides token replacements for all entity properties (or fields) that have no tokens and are known to the entity module (read about the entity property info API below).

For developers

The module provides API functions allowing modules to create, save, delete, view or to determine access for any entity, i.e. entity_create(), entity_save(), entity_delete(), entity_view() and entity_access().

The entity API introduces a unique place for metadata about entity relationships and entity properties: hook_entity_property_info(). This information about entity properties contains the data type and callbacks for how to get and set the data of a property. Modules may rely on this information in order to support any entity property, e.g. Rules and the Search API build upon that.

Furthermore the module provides data wrappers that make use of the available information to provide a simple and unified access to entities and their properties. For usage examples have a look at the README or the provided tests.

Beside that, the module helps you defining a new entity type. For that, it provides an entity controller, which implements full CRUD functionality for your entities. Optionally, entities may be created based on classes derived from the provided Entity class.

The entity API cares about creating fieldable, optionally revisionable entities as well as exportable entities. Additionally it supports implementing bundle entities, i.e. bundle objects (like node types) for fieldable entities implemented as (exportable) entities, for which the appropriate field API callbacks get automatically invoked.

For entity types implemented based upon the provided CRUD API the API is providing additional module integration too, i.e. Rules events are provided for all CRUD-related hooks, some basic entity property information for hook_entity_property_info() is provided and exportable entities are automatically integrated with the Features module. These module integrations are implemented in separate controller classes, which may be separately overridden or enabled/deactivated.

Optionally, the entity API also helps providing an administrative interface for managing entities, e.g. the UI for managing profile types of Profile 2 is built with that.

Changes
Please consult the change records in order to get a list of important changes - applicable to site builders and developers! Do not forget to run update.php after updating. Compatibility note: If the i18n Translation Sets module (i18n_translation) is used, an i18n version of 1.5 or later is required!
Drupal 8

The Drupal 8 core Entity API is significantly improved, so most of the features provided by the Drupal 7 version are already present in Drupal core.

The Drupal 8 version of the Entity API module is used for improvements to Drupal 8's Entity API which will be moved to Drupal core one day (development ongoing)

Credits
The project has been sponsored by

drunomics

epiqo

Maintainer

Wolfgang Ziegler (fago)

# data[].attributes.body.processed
This module extends the entity API of Drupal core in order to provide a unified way to deal with entities and their properties. Additionally, it provides an entity CRUD controller, which helps simplifying the creation of new entity types.

Requirements

Drupal 7.2 or later; suggested Drupal >= 7.15

Documentation

You can find documentation in the handbooks. Also check the README and the provided API docs in entity.api.php.

Overview

For site-builders

This is an API module, so it doesn't provide any end-user features. However, it provides some entity generic functionality to other modules that site-builders may leverage:

A Views display plugin and field to render or link to any entity (by view-mode)

A CTools content plugin to render any entity (by view-mode)

It ships with the Entity tokens module which makes sure there are tokens for most entity properties and fields, i.e. it provides token replacements for all entity properties (or fields) that have no tokens and are known to the entity module (read about the entity property info API below).

For developers

The module provides API functions allowing modules to create, save, delete, view or to determine access for any entity, i.e. entity_create(), entity_save(), entity_delete(), entity_view() and entity_access().

The entity API introduces a unique place for metadata about entity relationships and entity properties: hook_entity_property_info(). This information about entity properties contains the data type and callbacks for how to get and set the data of a property. Modules may rely on this information in order to support any entity property, e.g. Rules and the Search API build upon that.

Furthermore the module provides data wrappers that make use of the available information to provide a simple and unified access to entities and their properties. For usage examples have a look at the README or the provided tests.

Beside that, the module helps you defining a new entity type. For that, it provides an entity controller, which implements full CRUD functionality for your entities. Optionally, entities may be created based on classes derived from the provided Entity class.

The entity API cares about creating fieldable, optionally revisionable entities as well as exportable entities. Additionally it supports implementing bundle entities, i.e. bundle objects (like node types) for fieldable entities implemented as (exportable) entities, for which the appropriate field API callbacks get automatically invoked.

For entity types implemented based upon the provided CRUD API the API is providing additional module integration too, i.e. Rules events are provided for all CRUD-related hooks, some basic entity property information for hook_entity_property_info() is provided and exportable entities are automatically integrated with the Features module.
These module integrations are implemented in separate controller classes, which may be separately overridden or enabled/deactivated.

Optionally, the entity API also helps providing an administrative interface for managing entities, e.g. the UI for managing profile types of Profile 2 is built with that.

Changes

Please consult the change records in order to get a list of important changes - applicable to site builders and developers! Do not forget to run update.php after updating.

Compatibility note: If the i18n Translation Sets module (i18n_translation) is used, an i18n version of 1.5 or later is required!

Drupal 8

The Drupal 8 core Entity API is significantly improved, so most of the features provided by the Drupal 7 version are already present in Drupal core.

The Drupal 8 version of the Entity API module is used for improvements to Drupal 8's Entity API which will be moved to Drupal core one day (development ongoing)

Credits

The project has been sponsored by

drunomics

epiqo

Maintainer

Wolfgang Ziegler (fago)

Back to top

# data[].attributes.body.summary
This module extends the entity API of Drupal core in order to provide a unified way to deal with entities and their properties. Additionally, it provides an entity CRUD controller, which helps simplifying the creation of new entity types.
Requirements

Drupal 7.2 or later; suggested Drupal >= 7.15

Documentation
You can find documentation in the handbooks. Also check the README and the provided API docs in entity.api.php.
Overview

For site-builders
This is an API module, so it doesn't provide any end-user features. However, it provides some entity generic functionality to other modules that site-builders may leverage:

A Views display plugin and field to render or link to any entity (by view-mode)

A CTools content plugin to render any entity (by view-mode)

# data[].attributes.body.value
IMCE is a file manager featuring personal directories and quotas.
Features

Upload/delete files, resize images.

Support for file systems: private, s3, google

Configuration per role: file size/type, personal directories, quota

Editor integrations: CKEditor, BUEditor, plain textareas. See README.txt for instructions.

Theme/Js issues
Enable "Use admin theme for IMCE paths" option under Common settings at admin/config/media/imce if you're experiencing theme issues.
Credits
IMCE logo by Nico Grienauer (Grienauer).

# data[].attributes.body.processed
IMCE is a file manager featuring personal directories and quotas.

Features

Upload/delete files, resize images.

Support for file systems: private, s3, google

Configuration per role: file size/type, personal directories, quota

Editor integrations: CKEditor, BUEditor, plain textareas. See README.txt for instructions.

Theme/Js issues

Enable "Use admin theme for IMCE paths" option under Common settings at admin/config/media/imce if you're experiencing theme issues.

Credits

IMCE logo by Nico Grienauer (Grienauer).
Back to top

# data[].attributes.body.summary
A file manager featuring personal directories and quotas.

# data[].attributes.body.value
ABOUT
Focal Point allows you to specify the portion of an image that is most important. This information can be used when the image is cropped or cropped and scaled so that you don't, for example, end up with an image that cuts off the subject's head.
DEPENDENCIES

Drupal 8

Crop API

Image (from Core)

Drupal 7

Entity

Image (from Core)

USAGE
Thanks to the folks at Evolving Web there is a great tutorial that shows you exactly how to set up Focal Point.
STEP 1: Set up your image fields

For D8...
Install the module as usual. Once enabled you will have a shiny new image field widget called "Image (Focal Point)". Using this widget will allow your content editors to set the focal point at the desired position on the image (see below).
For D7...
Install the module as usual. Once enabled all standard image fields will allow users to set a focal point by default. The D7 version also supports media image fields if you are using the Media module ( >= 7.x-2.x).
STEP 2: Set the focal point for an image
To set the focal point on an image, go to the content edit form (ex. the node edit form) and upload an image. You will notice a crosshair in the middle of the newly uploaded image. Drag this crosshair to the most important part of your image. Alternatively you can click on the important part of your image if dragging seems too daunting. As a bonus, you can double-click the crosshair to see the exact coordinates (in percentages) of the focal point.
STEP 3: Setup an image style to crop your image
The focal point module comes with two image effects:

focal point crop

focal point crop and scale

Both effects will ensure that the user-defined focal point is as close to the center of your cropped image as possible. It guarantees the focal point will be not be cropped out of your image and that the image size will be the specified size.

# data[].attributes.body.processed
Back to top
ABOUT

Focal Point allows you to specify the portion of an image that is most important. This information can be used when the image is cropped or cropped and scaled so that you don't, for example, end up with an image that cuts off the subject's head.
Back to top
DEPENDENCIES

Drupal 8

Crop API

Image (from Core)

Drupal 7

Entity

Image (from Core)

Back to top
USAGE

Thanks to the folks at Evolving Web there is a great tutorial that shows you exactly how to set up Focal Point.

STEP 1: Set up your image fields

For D8...

Install the module as usual. Once enabled you will have a shiny new image field widget called "Image (Focal Point)". Using this widget will allow your content editors to set the focal point at the desired position on the image (see below).

For D7...

Install the module as usual. Once enabled all standard image fields will allow users to set a focal point by default. The D7 version also supports media image fields if you are using the Media module ( >= 7.x-2.x).

STEP 2: Set the focal point for an image

To set the focal point on an image, go to the content edit form (ex. the node edit form) and upload an image. You will notice a crosshair in the middle of the newly uploaded image. Drag this crosshair to the most important part of your image. Alternatively you can click on the important part of your image if dragging seems too daunting.

As a bonus, you can double-click the crosshair to see the exact coordinates (in percentages) of the focal point.

STEP 3: Setup an image style to crop your image

The focal point module comes with two image effects:

focal point crop

focal point crop and scale

Both effects will ensure that the user-defined focal point is as close to the center of your cropped image as possible. It guarantees the focal point will be not be cropped out of your image and that the image size will be the specified size.
Back to top

# data[].attributes.body.value
Google Tag

The 2.0.x branch supports Google Tag and Google Tag Manager. Users of Google Analytics should be using the 2.x version of this module.

This project integrates the site with the Google Tag Manager (GTM) application. GTM allows you to deploy analytics and measurement tag configurations from a web-based user interface (hosted by Google) instead of requiring administrative access to your website. To use the module, sign up for GTM and obtain a "container ID" for your website. For development purposes, create a GTM environment for your website. CRITICAL NOTES for releases 8.x-1.3+ If the site enables other modules that implement condition plugins (e.g. ctools, rules, webform), then it will most likely be necessary to apply the core patch from issue '3114467' (link intentionally omitted). If Drush commands are run as a user other than the web user, then do NOT enable the recreate snippets on cache rebuild module setting unless the web user has permission to delete files created by the Drush user. This setting will be disabled by default beginning with release 8.x-1.6. Features in 8.x and 7.x-2.x branches These branches support multiple containers. From the container management page, add a container and enter the "container ID" and "environment ID" on the container form. You may also configure the conditions on which the tags are inserted on a page response. Conditions exist for: request path, user role, response status, domain, and language. The latter two require the domain and language (8.x) or locale (7.x) modules, respectively. In addition, other modules may also define and implement additional conditions using the condition plugin architecture in 8.x or the exposed hooks in 7.x (see the api.php file). Alternatively, other modules can implement hook_google_tag_insert_alter() to apply additional conditions on the containers inserted on a page response. Additional features in 7.x-2.x branch The 7.x-2.x branch also provides a variable realm condition. The realm condition may be used to filter the containers by realm, such as language and domain. This feature requires the variable_realm and variable_store modules to be enabled and configured. Features in 7.x-1.x branch This branch implements the Variable API, so that settings may be separately configured by realm, thus enabling support for multiple languages and domains. False positives from Google Search Console If you attempt to verify your site for GTM using the Google Search Console, be aware the Google tool will return false positive results. For example, the tool will indicate the "noscript" snippet needs to be placed "immediately" after the opening body tag. (NOTE: The module places the snippet as close to the body tag as can be done using standard Drupal hooks.) Verification using this tool may fail but the JavaScript works properly and tags will be added to the page and fired as defined in your GTM account. If you want this snippet immediately after body tag, then modify the theme template file (html.tpl.php for Drupal 7, html.html.twig for Drupal 8), as it controls how close the snippet will be to the body tag.

# data[].attributes.body.processed
Google Tag

The 2.0.x branch supports Google Tag and Google Tag Manager. Users of Google Analytics should be using the 2.x version of this module.

This project integrates the site with the Google Tag Manager (GTM) application. GTM allows you to deploy analytics and measurement tag configurations from a web-based user interface (hosted by Google) instead of requiring administrative access to your website.

To use the module, sign up for GTM and obtain a "container ID" for your website. For development purposes, create a GTM environment for your website.

CRITICAL NOTES for releases 8.x-1.3+
If the site enables other modules that implement condition plugins (e.g. ctools, rules, webform), then it will most likely be necessary to apply the core patch from issue '3114467' (link intentionally omitted).

If Drush commands are run as a user other than the web user, then do NOT enable the recreate snippets on cache rebuild module setting unless the web user has permission to delete files created by the Drush user. This setting will be disabled by default beginning with release 8.x-1.6.

Features in 8.x and 7.x-2.x branches
These branches support multiple containers. From the container management page, add a container and enter the "container ID" and "environment ID" on the container form. You may also configure the conditions on which the tags are inserted on a page response. Conditions exist for: request path, user role, response status, domain, and language. The latter two require the domain and language (8.x) or locale (7.x) modules, respectively.

In addition, other modules may also define and implement additional conditions using the condition plugin architecture in 8.x or the exposed hooks in 7.x (see the api.php file). Alternatively, other modules can implement hook_google_tag_insert_alter() to apply additional conditions on the containers inserted on a page response.

Additional features in 7.x-2.x branch
The 7.x-2.x branch also provides a variable realm condition. The realm condition may be used to filter the containers by realm, such as language and domain. This feature requires the variable_realm and variable_store modules to be enabled and configured.

Features in 7.x-1.x branch
This branch implements the Variable API, so that settings may be separately configured by realm, thus enabling support for multiple languages and domains.

False positives from Google Search Console
If you attempt to verify your site for GTM using the Google Search Console, be aware the Google tool will return false positive results. For example, the tool will indicate the "noscript" snippet needs to be placed "immediately" after the opening body tag. (NOTE: The module places the snippet as close to the body tag as can be done using standard Drupal hooks.) Verification using this tool may fail but the JavaScript works properly and tags will be added to the page and fired as defined in your GTM account. If you want this snippet immediately after body tag, then modify the theme template file (html.tpl.php for Drupal 7, html.html.twig for Drupal 8), as it controls how close the snippet will be to the body tag.

# data[].attributes.body.value
This module allows Drupal to bypass the PHP mail() function and send email directly to an SMTP server. The module supports SMTP authentication and can even connect to servers using SSL if supported by PHPMailer.
What does SMTP do?
It sends mail via the SMTP protocol using the PHPMailer library. While it can be a standalone module for the Drupal mailsystem, you can also use the mailsystem module to manage multiple mailer modules including SMTP.
What does SMTP NOT do?
This module does not support (and will not support) sending mail via other protocols or APIs other than SMTP. For Example: While services like sendgrid do support SMTP, you may get a better experience using the Sendgrid Integration Module
Drupal 8/9 version requires PHPMailer 6.x
If you're using the most recent version of SMTP, you must download the PHPMailer library. It is suggested you install the SMTP module via composer: composer require drupal/smtp

# data[].attributes.body.processed
This module allows Drupal to bypass the PHP mail() function and send email directly to an SMTP server. The module supports SMTP authentication and can even connect to servers using SSL if supported by PHPMailer.

What does SMTP do?

It sends mail via the SMTP protocol using the PHPMailer library. While it can be a standalone module for the Drupal mailsystem, you can also use the mailsystem module to manage multiple mailer modules including SMTP.

What does SMTP NOT do?

This module does not support (and will not support) sending mail via other protocols or APIs other than SMTP.
For Example: While services like sendgrid do support SMTP, you may get a better experience using the Sendgrid Integration Module

Drupal 8/9 version requires PHPMailer 6.x

If you're using the most recent version of SMTP, you must download the PHPMailer library. It is suggested you install the SMTP module via composer:
composer require drupal/smtp
Back to top

# data[].attributes.body.value
Important note:
If you are installing this module for integration with a media library, core already contains all the tools required for embedding remotely hosted videos. This module should no longer be required for most use cases and should be avoided if possible. For more information see the documentation for configuring remote video in core or migrating to core media from Video Embed Field.
Video Embed field creates a simple field type that allows you to embed videos from YouTube and Vimeo and show their thumbnail previews simply by entering the video's url.

Above on the left is an example of using the video field type (displaying an embedded video as well as thumbnail previews of related videos) and on the right is an example of the wysiwyg integration, allowing you to embed videos into ckeditor.

Features

Responsive out the box, optionally make your videos scale proportionally to their container.

Large contrib ecosystem of video providers supported.

Easily pluggable, write simple plugins to support any video platform or provider.

Robust URL matching to support an array of possible inputs.

Display videos in a modal window, with Colorbox support.

Display thumbnails with image style support.

Role based autoplay override, allows configured roles to suppress video autoplay.

Easily overridable embed markup.
A direct WYSIWYG integration, provided by the video_embed_wysiwyg sub-module.

Integration with the media_entity module for websites using the media suite of modules.

Migrations to D8 from D7 as well as the D6 emfield module.

Video Providers
Vimeo and YouTube are provided by default, but a number of contrib modules exist for other providers:

YouTube and Vimeo (packaged with the module)

Facebook

Vine

Dailymotion

Instagram

Ted

AOL

Wistia

Google Drive

HTML5

Hudl

Peertube

Metacafe

MySpace

Rutube

Youku

Dreambroker

Vidyard

Brightcove

Hulu

JW Player
Vzaar

TwentyThree

Kaltura

Configuration
Once a video field has been created, simply configure how it should be displayed using the 'Video' or 'Thumbnail' field formatter. Each of these field formatters contain standard configuration options which allow you to customise how the content is displayed. In the Drupal 7 version 'styles' can be created which control the display for different video providers, however in the Drupal 8 version, the configuration for all the field formatters are standardized across all video providers.
Media Entity Integration
For websites using the media suite of modules for Drupal 8, video_embed_field comes with a media_entity integration. This allows you to create a media bundle specifically for storing embeddable videos and use these alongside your other media bundles.
Video WYSIWYG Integration
If you are not using the media suite of modules, there is a direct integration with the WYSIWYG. To use, make sure you have the "video_embed_wysiwyg" module enabled. Visit "Configuration" > "Text formats and editors" > "Configure" your chosen editor. Then drag the video icon onto the ckeditor toolbar and make sure the "Video Embed WYSIWYG" input filter is enabled.
For Developers
For the Drupal 7 version, see video_embed_field.api.php for information on how to create a video provider. For Drupal 8, you can implement a 'VideoEmbedProvider' plugin to allow other video platforms to be supported. For examples of this, see the plugins directory. More information for developers using the Drupal 8 version can be found here.
Support
For support updating to the latest version on the Drupal 7 version, see the documentation page. All other issues can be reported in the issue queue.
Version 3.x

⚠️ Breaking changes from 8.x-2.x

A new file_system parameter has been added to the ProviderPluginBase constructor. Please update your custom providers accordingly if you need the thumbnail download feature.

Two new parameters have been added to the renderEmbedCode provider method to improve accessibility (iframe).

Media Entity Support: Which version should I use?
If you are using the 1.x branch of Media Entity, you should continue using the 1.x branch of this module. If you are building a new site and want to use the new Media in core 8.4.0 or higher, you should use the 2.x branch of this module. If you have an existing site with Media Entity 1.x and you want to upgrade to Media in core check the upgrade instructions on the Media Entity module page for more information on that process.

# data[].attributes.body.processed
Back to top
Important note:

If you are installing this module for integration with a media library, core already contains all the tools required for embedding remotely hosted videos. This module should no longer be required for most use cases and should be avoided if possible. For more information see the documentation for configuring remote video in core or migrating to core media from Video Embed Field.

Video Embed field creates a simple field type that allows you to embed videos from YouTube and Vimeo and show their thumbnail previews simply by entering the video's url.

Above on the left is an example of using the video field type (displaying an embedded video as well as thumbnail previews of related videos) and on the right is an example of the wysiwyg integration, allowing you to embed videos into ckeditor.

Features

Responsive out the box, optionally make your videos scale proportionally to their container.

Large contrib ecosystem of video providers supported.

Easily pluggable, write simple plugins to support any video platform or provider.

Robust URL matching to support an array of possible inputs.

Display videos in a modal window, with Colorbox support.

Display thumbnails with image style support.

Role based autoplay override, allows configured roles to suppress video autoplay.

Easily overridable embed markup.

A direct WYSIWYG integration, provided by the video_embed_wysiwyg sub-module.

Integration with the media_entity module for websites using the media suite of modules.

Migrations to D8 from D7 as well as the D6 emfield module.

Video Providers

Vimeo and YouTube are provided by default, but a number of contrib modules exist for other providers:

YouTube and Vimeo (packaged with the module)

Facebook

Vine

Dailymotion

Instagram

Ted

AOL

Wistia

Google Drive

HTML5

Hudl

Peertube

Metacafe

MySpace

Rutube

Youku

Dreambroker

Vidyard

Brightcove

Hulu

JW Player

Vzaar

TwentyThree

Kaltura

Configuration

Once a video field has been created, simply configure how it should be displayed using the 'Video' or 'Thumbnail' field formatter. Each of these field formatters contain standard configuration options which allow you to customise how the content is displayed. In the Drupal 7 version 'styles' can be created which control the display for different video providers, however in the Drupal 8 version, the configuration for all the field formatters are standardized across all video providers.

Media Entity Integration

For websites using the media suite of modules for Drupal 8, video_embed_field comes with a media_entity integration. This allows you to create a media bundle specifically for storing embeddable videos and use these alongside your other media bundles.

Video WYSIWYG Integration

If you are not using the media suite of modules, there is a direct integration with the WYSIWYG. To use, make sure you have the "video_embed_wysiwyg" module enabled. Visit "Configuration" > "Text formats and editors" > "Configure" your chosen editor. Then drag the video icon onto the ckeditor toolbar and make sure the "Video Embed WYSIWYG" input filter is enabled.

For Developers

For the Drupal 7 version, see video_embed_field.api.php for information on how to create a video provider. For Drupal 8, you can implement a 'VideoEmbedProvider' plugin to allow other video platforms to be supported. For examples of this, see the plugins directory. More information for developers using the Drupal 8 version can be found here.

Support

For support updating to the latest version on the Drupal 7 version, see the documentation page. All other issues can be reported in the issue queue.

Version 3.x

⚠️ Breaking changes from 8.x-2.x

A new file_system parameter has been added to the ProviderPluginBase constructor. Please update your custom providers accordingly if you need the thumbnail download feature.

Two new parameters have been added to the renderEmbedCode provider method to improve accessibility (iframe).

Back to top
Media Entity Support: Which version should I use?

If you are using the 1.x branch of Media Entity, you should continue using the 1.x branch of this module.

If you are building a new site and want to use the new Media in core 8.4.0 or higher, you should use the 2.x branch of this module.

If you have an existing site with Media Entity 1.x and you want to upgrade to Media in core check the upgrade instructions on the Media Entity module page for more information on that process.
Back to top

# data[].attributes.body.summary
Video Embed field creates a simple field type that allows you to embed videos from YouTube and Vimeo and show their thumbnail previews simply by entering the video's url.

# data[].attributes.body.value
Description
The ExternalAuth module provides a generic service for logging in and registering users that are authenticated against an external site or service and storing the authentication details. It is the Modern Drupal equivalent of user_external_login_register() and related functions, as well as the authmap table in Drupal 7 core.
Target audience
This is a helper module, intended to be used by Drupal module developers, as a dependency for their own custom / contrib modules. It provides no out-of-the-box UI or functionality for site builders.
Related modules

User Auth API - for Drupal 7

Modules using ExternalAuth

LDAP

CAS

SAML Authentication

SimpleSAMLphp Authentication

Certificate Login

Tupas Authentication

BankID

... and more

# data[].attributes.body.processed
Back to top
Description

The ExternalAuth module provides a generic service for logging in and registering users that are authenticated against an external site or service and storing the authentication details.
It is the Modern Drupal equivalent of user_external_login_register() and related functions, as well as the authmap table in Drupal 7 core.
Back to top
Target audience

This is a helper module, intended to be used by Drupal module developers, as a dependency for their own custom / contrib modules. It provides no out-of-the-box UI or functionality for site builders.
Back to top
Related modules

User Auth API - for Drupal 7

Back to top
Modules using ExternalAuth

LDAP

CAS

SAML Authentication

SimpleSAMLphp Authentication

Certificate Login

Tupas Authentication

BankID

... and more

Back to top

# data[].attributes.body.summary
Provides a generic service for logging in and registering users that are authenticated against an external site or service and storing the authentication details.

# data[].attributes.body.value
This module changes default image field widget and formatter to allow use SVG image with the standard Image field.
Using SVG Image module you will not have to use another field type to load SVG image. Load SVG files into the Image field, it is not needed to create file field or special "SVG" type field.
Don't forget to add svg file extension into the list of the allowed image extensions in the field settings. Features (beyond the main functionality):

Ability to select width and height of the image in formatter settings

Ability to render svg image as <img> or <svg> tags.

Responsive image support. Please activate svg_image_responsive submodule to get such functionality

If you met any problems with this module - feel free to create an issue. Other modules:

SVG image field - Provides another field type used for SVG image uploading.

SVG Formatter - Module adds ability to display field with type "file" as SVG image.

# data[].attributes.body.processed
This module changes default image field widget and formatter to allow use SVG image with the standard Image field.

Using SVG Image module you will not have to use another field type to load SVG image. Load SVG files into the Image field, it is not needed to create file field or special "SVG" type field.

Don't forget to add svg file extension into the list of the allowed image extensions in the field settings.

Features (beyond the main functionality):

Ability to select width and height of the image in formatter settings

Ability to render svg image as <img> or <svg> tags.

Responsive image support. Please activate svg_image_responsive submodule to get such functionality

If you met any problems with this module - feel free to create an issue.

Other modules:

SVG image field - Provides another field type used for SVG image uploading.

SVG Formatter - Module adds ability to display field with type "file" as SVG image.

# data[].attributes.body.value
A framework module to help smooth the developer experience of offering embeddable things using the Drupal 8 WYSIWYG editor.
Related Modules

Entity Embed

Element Embed

URL Embed

View Entity Embed

Paragraphs Entity Embed

# data[].attributes.body.processed
A framework module to help smooth the developer experience of offering embeddable things using the Drupal 8 WYSIWYG editor.

Related Modules

Entity Embed

Element Embed

URL Embed

View Entity Embed

Paragraphs Entity Embed

# data[].attributes.body.value
The <strong>Easy Breadcrumb</strong> module updates the core Breadcrumb block to include the current page title in the breadcrumbs. It comes with settings that are common features needed in crumbs.

Breadcrumbs use the current URL (path alias) and the current page title to build the crumbs. The module is designed to work with no adjustments and it has settings to customize the crumbs.

<h3>Example</h3>

<p>URL: /gallery/videos/kittens</p>

<p>Breadcrumbs: <code>Home >> Gallery >> Videos >> Cute Kittens</code></p> 

<h3>Recommended modules</h3>
<ul>
  <li><a href="http://drupal.org/project/pathauto">Pathauto</a></li>
  <li><a href="https://www.drupal.org/project/breadcrumb_extra_field">Breadcrumb Extra field</a></li>
</ul>

<h3>Configuration</h3> 

To start using it, just go to the admin modules page (URL <em>admin/modules/list</em>), locate and activate it under the category "others", then go to the blocks list page (URL <em>admin/structure/block</em>) and locate the block named "Breadcrumb", and configure it like any other block (region, URLs, etc.).

The configuration page of this module is under <em>Admin > Configuration > User Interface > Easy Breadcrumb</em> (URL <em>admin/config/user-interface/easy-breadcrumb</em>).

<ul>
<li>Include / Exclude the current page title as a segment</li>
<li>Include / Exclude on admin paths</li>
<li>Add JsonLD metadata for breadcrumbs</li>
<li>Replace titles with simple regex</li>
<li>Optionally add the language as a crumb</li>
<li>Optionally include taxonomy hierarchy</li>
<li>Truncate the maximum length of a crumb title</li>
<li>Include / Exclude invalid path alias as plain-text segments</li>
<li>Exclude some paths from the segments to be generated</li>
<li>Include / Exclude the front page as a segment in the breadcrumb</li>
<li>Customize the title of the front page segment in the breadcrumb</li>
<li>Use the real page's title when it is available instead of deducing it from the URL</li>
<li>Print the page's title as a link or as plain-text segment</li>
<li>Limit the total number of crumbs</li>
<li>Choose a transformation mode for the segments' title</li>
<li>Make the 'capitalizator' ignore some words (words not to be capitalized)</li>
</ul>

<h3>Maintainers</h3>

<ul>
  <li><a href="http://www.gregboggs.com" title="Greg Boggs">Greg Boggs</a></li>
  <li><a href="https://www.drupal.org/u/spuky">Thomas Speer</li>
  <li><a href="https://www.drupal.org/u/RenatoG" title="Renato">Renato Gonçalves</a></li>
</ul>

<h3>Credits</h3>
<p>Original author: Roger Padilla Camacho (<a href="http://drupal.org/user/1667988" title="Roger Padilla">sonemonu</a>) - Drupal 7</p>
Easy Breadcrumb Logo by <a href="https://www.drupal.org/u/grienauer">Nico Grienauer (Grienauer)</a>

<h3>Similar Modules </h3>
<p>Easy Breadcrumb can be mixed and matched with other breadcrumb modules using block visibility settings.</p>

<ul>
<li><a href="https://www.drupal.org/project/current_page_crumb">Current Page Crumb</a> - Add the current page to crumbs with no configuration options.</li>
<li><a href="https://www.drupal.org/project/custom_breadcrumbs"> Custom Breadcrumbs </a> - Takes more work to set up, and it has fewer configuration options, but it allows you to build arbitrary crumbs unrelated to the path of the page.</li>
<li><a href="https://www.drupal.org/project/menu_breadcrumb">Menu Breadcrumb</a> - Sets breadcrumbs based entirely on a menu structure and requires putting all content into a menu.</li>
</ul>

# data[].attributes.body.processed
The Easy Breadcrumb module updates the core Breadcrumb block to include the current page title in the breadcrumbs. It comes with settings that are common features needed in crumbs.

Breadcrumbs use the current URL (path alias) and the current page title to build the crumbs. The module is designed to work with no adjustments and it has settings to customize the crumbs.

Example

URL: /gallery/videos/kittens

Breadcrumbs: Home >> Gallery >> Videos >> Cute Kittens

Recommended modules

Pathauto

Breadcrumb Extra field

Configuration

To start using it, just go to the admin modules page (URL admin/modules/list), locate and activate it under the category "others", then go to the blocks list page (URL admin/structure/block) and locate the block named "Breadcrumb", and configure it like any other block (region, URLs, etc.).

The configuration page of this module is under Admin > Configuration > User Interface > Easy Breadcrumb (URL admin/config/user-interface/easy-breadcrumb).

Include / Exclude the current page title as a segment

Include / Exclude on admin paths

Add JsonLD metadata for breadcrumbs

Replace titles with simple regex

Optionally add the language as a crumb

Optionally include taxonomy hierarchy

Truncate the maximum length of a crumb title

Include / Exclude invalid path alias as plain-text segments

Exclude some paths from the segments to be generated

Include / Exclude the front page as a segment in the breadcrumb

Customize the title of the front page segment in the breadcrumb

Use the real page's title when it is available instead of deducing it from the URL

Print the page's title as a link or as plain-text segment

Limit the total number of crumbs

Choose a transformation mode for the segments' title

Make the 'capitalizator' ignore some words (words not to be capitalized)

Maintainers

Greg Boggs

Thomas Speer

Renato Gonçalves

Credits

Original author: Roger Padilla Camacho (sonemonu) - Drupal 7

Easy Breadcrumb Logo by Nico Grienauer (Grienauer)

Similar Modules

Easy Breadcrumb can be mixed and matched with other breadcrumb modules using block visibility settings.

Current Page Crumb - Add the current page to crumbs with no configuration options.

Custom Breadcrumbs - Takes more work to set up, and it has fewer configuration options, but it allows you to build arbitrary crumbs unrelated to the path of the page.

Menu Breadcrumb - Sets breadcrumbs based entirely on a menu structure and requires putting all content into a menu.

Back to top

# data[].attributes.body.summary
This module updates the core Breadcrumb block to include the current page title in the breadcrumbs. It comes with settings that are common features needed in crumbs.

# data[].attributes.field_issue_summary_template.value
Please open merge requests and not patches for code you want to include: https://www.gregboggs.com/drupal-merge-requests/

# data[].attributes.field_issue_summary_template.processed
Please open merge requests and not patches for code you want to include: https://www.gregboggs.com/drupal-merge-requests/

# data[].attributes.body.value
Introduction
Ever experienced that your site's configuration was overridden, by the configuration on the file system, when running a drush cim? Not anymore! This module is a tool to let you keep the configuration you want, in place. This module effectively lets you treat configuration as if it was content. It does so by changing the configuration that is about to be imported to the one that exists already on the site and therefore there is no difference that the configuration import would need to update.
Requirements
This module requires only Drupal core. With the advent of the Drupal 9 EOL soon this module will also require PHP 8.1+. However, 8.x-3.1 still works on Drupal 9 and its supported PHP versions.
Installation
There is nothing special about the installation of this module. Check the documentation for installing modules
Configuration
If you go to admin/config/development/configuration/ignore you will see a fairly simple interface. Add the name of the configuration that you want to ignore. E.g. system.site to ignore site name, slogan and email site email address. Click the "Save configuration" button and you are good to go. Do not ignore the core.extension configuration as it will prevent you from enabling new modules with a config import. Use the Config Split module for environment specific modules. By selecting intermediate or advanced you get two or six text areas to fill respectively. This allows you to fine tune the configuration to ignore in different circumstances. If you need to bypass Config Ignore you can update/create a single configuration by using the "Single import" feature at admin/config/development/configuration/single/import. if you need to deactivate Config Ignore, include $settings['config_ignore_deactivate'] = TRUE; in your settings.php file.
Upgrade from version 2.x to 3.x
Be sure to run the update hooks so that the new mode configuration is set. Config Ignore 2.x only ignored config on import (unless patched) whereas Config Ignore 3. ignores on import and on export in the simple mode. You can configure different configuration to ignore on import and export with the intermediate mode. Attention: 2.x depended on Config Filter, but 3.x uses the core API. If you have not explicitly required Config Filter before Composer will remove it when updating. But then you are left with a drupal module still being installed but no longer available in the code base. In order to properly uninstall Config Filter you should explicitly require it and then uninstall it, and remove it from composer.json only in a later deployment.
Maintainers
Current maintainers:

Tommy Lynge Jørgensen (TLyngeJ) - https://www.drupal.org/u/tlyngej

Fabian Bircher (bircher) - https://www.drupal.org/u/bircher

Jordan Thompson (nord102) - https://www.drupal.org/u/nord102

# data[].attributes.body.processed
Back to top
Introduction

Ever experienced that your site's configuration was overridden, by the configuration on the file system, when running a drush cim?

Not anymore!

This module is a tool to let you keep the configuration you want, in place.

This module effectively lets you treat configuration as if it was content. It does so by changing the configuration that is about to be imported to the one that exists already on the site and therefore there is no difference that the configuration import would need to update.
Back to top
Requirements

This module requires only Drupal core. With the advent of the Drupal 9 EOL soon this module will also require PHP 8.1+. However, 8.x-3.1 still works on Drupal 9 and its supported PHP versions.
Back to top
Installation

There is nothing special about the installation of this module. Check the documentation for installing modules
Back to top
Configuration

If you go to admin/config/development/configuration/ignore you will see a fairly simple interface.

Add the name of the configuration that you want to ignore. E.g. system.site to ignore site name, slogan and email site email address. Click the "Save configuration" button and you are good to go.

Do not ignore the core.extension configuration as it will prevent you from enabling new modules with a config import. Use the Config Split module for environment specific modules.

By selecting intermediate or advanced you get two or six text areas to fill respectively. This allows you to fine tune the configuration to ignore in different circumstances.

If you need to bypass Config Ignore you can update/create a single configuration by using the "Single import" feature at admin/config/development/configuration/single/import.

if you need to deactivate Config Ignore, include $settings['config_ignore_deactivate'] = TRUE; in your settings.php file.
Back to top
Upgrade from version 2.x to 3.x

Be sure to run the update hooks so that the new mode configuration is set.
Config Ignore 2.x only ignored config on import (unless patched) whereas Config Ignore 3. ignores on import and on export in the simple mode. You can configure different configuration to ignore on import and export with the intermediate mode.
Attention: 2.x depended on Config Filter, but 3.x uses the core API. If you have not explicitly required Config Filter before Composer will remove it when updating. But then you are left with a drupal module still being installed but no longer available in the code base.
In order to properly uninstall Config Filter you should explicitly require it and then uninstall it, and remove it from composer.json only in a later deployment.
Back to top
Maintainers

Current maintainers:

Tommy Lynge Jørgensen (TLyngeJ) - https://www.drupal.org/u/tlyngej

Fabian Bircher (bircher) - https://www.drupal.org/u/bircher

Jordan Thompson (nord102) - https://www.drupal.org/u/nord102

Back to top

# data[].attributes.body.value
Adds the <a href="https://marketingplatform.google.com/about/analytics/">Google Analytics</a> web statistics tracking system to your website.
	 	 
The module allows you to add the following statistics features to your site:
<ul>
<li>Single/multi/cross domain tracking</li>
<li>Selectively track/exclude certain users, roles and pages</li>
<li>Monitor what type of links are tracked (downloads, outgoing and mailto)</li>
<li>Monitor what files are downloaded from your pages</li>
<li><a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/custom-dims-mets">Custom dimensions and metrics</a> support with tokens</li>
<li>Custom code snippets</li>
<li>Site Search support</li>
<li>AdSense support</li>
<li>Demographics and Interests support (formerly known as DoubleClick remarketing support)</li>
<li>Anonymize visitors IP address</li>
<li>DoNotTrack support (non-cached content only)</li>
<li>Drupal messages tracking</li>
<li>Modal dialog tracking (<a href="http://drupal.org/project/colorbox">Colorbox</a>)</li>
<li>Access denied (403) and Page not found (404) tracking</li>
<li>Cache the Google Analytics code on your local server for improved page loading times</li>
<li>Enhanced Link Attribution support</li>
<li><a href="https://developers.google.com/analytics/devguides/collection/analyticsjs/cookies-user-id#user_id">User ID</a> tracking across devices</li>
<li>Changing URL fragments can be tracked as pageviews</li>
<li>Debug mode with analytics_debug.js</li>
</ul>
<!--break-->

<p>Version specific features</p>
<ul>
  <li>Legacy Universal Analytics (UA) support: 6.x-4.x, 7.x-2.x, 8.x-2.x</li>
  <li>Legacy Global Site Tag (gtag.js) support: 8.x-3.x</li>
  <li>Global Site Tag Version 4 support: 4.x</li>
</ul>

<p><strong>Current Supported version:</strong>4.x and 7.x-2.x</p>
The 4.x module supports multiple accounts, which will allow you to run multiple tags within the same module. The 7.x-2.x version supports the latest GA (gtag) 4 service from google.

Users are strongly encouraged to use Google Tag 2.0+ instead. It supports all of GA4 and is the successor to this module.

<p>Other related modules</p>
<ul>
  <li><a href="https://drupal.org/project/google_analytics_reports">Google Analytics Reports</a>  provides graphical reporting of your site's tracking data. Graphical reports include a dashboard widget for admins, a small path-based report in blocks, and a full path-based report.</li>
</ul>

# data[].attributes.body.processed
Adds the Google Analytics web statistics tracking system to your website.

The module allows you to add the following statistics features to your site:

Single/multi/cross domain tracking

Selectively track/exclude certain users, roles and pages

Monitor what type of links are tracked (downloads, outgoing and mailto)

Monitor what files are downloaded from your pages

Custom dimensions and metrics support with tokens

Custom code snippets

Site Search support

AdSense support

Demographics and Interests support (formerly known as DoubleClick remarketing support)

Anonymize visitors IP address

DoNotTrack support (non-cached content only)

Drupal messages tracking

Modal dialog tracking (Colorbox)

Access denied (403) and Page not found (404) tracking

Cache the Google Analytics code on your local server for improved page loading times

Enhanced Link Attribution support

User ID tracking across devices

Changing URL fragments can be tracked as pageviews

Debug mode with analytics_debug.js

Version specific features

Legacy Universal Analytics (UA) support: 6.x-4.x, 7.x-2.x, 8.x-2.x

Legacy Global Site Tag (gtag.js) support: 8.x-3.x

Global Site Tag Version 4 support: 4.x

Current Supported version:4.x and 7.x-2.x

The 4.x module supports multiple accounts, which will allow you to run multiple tags within the same module. The 7.x-2.x version supports the latest GA (gtag) 4 service from google.

Users are strongly encouraged to use Google Tag 2.0+ instead. It supports all of GA4 and is the successor to this module.

Other related modules

Google Analytics Reports provides graphical reporting of your site's tracking data. Graphical reports include a dashboard widget for admins, a small path-based report in blocks, and a full path-based report.

# data[].relationships.field_project_images.data[].meta.alt
Google Analytics for Drupal configuration page

# data[].attributes.body.value
Scheduler gives editors the ability to schedule content, media, commerce products and taxonomy terms for publishing and unpublishing at specified dates and times in the future.

The 2.x branch introduced a plugin system to allow scheduled processing of more entity types, and plugins have been developed to schedule core Content, Media and Taxonomy Terms, and <a href="https://www.drupal.org/project/Commerce">Commerce Products</a>. The 8.x-1.x branch can only schedule nodes. 

To use calendar popups in Drupal 7 you need to install the Date Popup module, which is part of the <a href="/project/date">Date</a> module. From Drupal 8+ this is built into Core. 

<h3 id='integration'>Scheduler integration with other modules</h3>
<ul>
<li>If you use the <a href="https://www.drupal.org/docs/8/core/modules/content-moderation" title="core Content Moderation module">core Content Moderation module</a> then you should also install the <a href="https://www.drupal.org/project/scheduler_content_moderation_integration" title="Scheduler Content Moderation Integration sub-module">Scheduler Content Moderation Integration sub-module</a></li>
<li>Scheduler integrates with the <a href="https://www.drupal.org/project/workbench_moderation">Workbench Moderation</a> module</li>
<li>Scheduler provides Conditions, Actions and Events for use in the <a href="https://www.drupal.org/project/rules" title="Rules">Rules</a> module</li>
<li> When generating new test content via <a href="https://www.drupal.org/project/devel" title="Devel Generate">Devel Generate</a> Scheduler can add publishing and unpublishing dates automatically</li>
<li>Scheduler provides drush commands to run Scheduler's lightweight cron</li>
<li>Scheduler provides tokens for the scheduled dates</li>
 </ul

<h3 id='releases'>Branches, releases and Core version compatibility</h3>
<ul>
<li>The main development branch is 2.x and this is compatible with Drupal 8, 9, 10 and 11</li>
<li>For progress and help towards the next 2.x release check <a href = 'https://www.drupal.org/project/issues/search/scheduler?status[]=13&status[]=8&status[]=14&status[]=15&version[0]=any_2.'>these 2.x issues</a></li>
<li>The 8.x-1.x branch is compatible with Drupal 8.9, all versions of Drupal 9 and Drupal 10 and will be compatible with 11.0 at least</li>
<li>Simple non-breaking changes that are done in 2.x will be back-ported to 8.x-1.x to help keep the codebase in line. But any major changes that would require significant reworking for 8.x-1.x might not be back-ported.</li>
<li>For progress towards the next Scheduler 8.x-1.x release you can help on <a href = 'https://www.drupal.org/project/issues/search/scheduler?status[]=13&status[]=8&status[]=14&status[]=15&version[0]=any_8.x-'>these 8.x-1.x tasks</a></li>
<li>The latest version for Drupal 7 is <a href='https://www.drupal.org/project/scheduler/releases/7.x-1.7'>7.x-1.7</a> released in November 2023</li>
<li>You can review and test <a href = '/project/issues/search/scheduler?status[]=13&status[]=8&status[]=14&status[]=15&version[0]=any_7.x-'>any outstanding 7.x tasks</a></li>
</ul>

<h3 id='notes'>Notes</h3>
<ul>
<li>Now that DrupalCI is no longer testing against patches, if you want to contribute please use the Gitlab Merge Request process.</li>
<li>If Scheduler does not publish your scheduled nodes please check if cron is running correctly. You may find the Drupal documentation on <a href="https://www.drupal.org/docs/7/setting-up-cron" title="setting up cron jobs">setting up cron jobs</a> helpful.</li>
<li>Scheduler only <em>publishes</em> and <em>unpublishes</em> nodes. If you want to schedule any other activity check out <a href="/project/workflow">Workflow</a>, <a href="/project/rules">Rules</a>, <a href="/project/actions">Actions</a> and <a href="/project/job_scheduler">Job Scheduler</a>.</li>
<li>Here is an excellent <a href='https://contribkanban.com/board/scheduler'>alternative view of the entire Scheduler issue queue on Contrib Kanban</a></li>
</ul>

<h3 id='standards'>Coding Standards</h3>
The Scheduler codebase passes all the standards checks run via PHPCS and ESLINT. The project has its own phpcs.xml config file. If you think there are coding standards that need to be fixed please check the <a href="https://git.drupalcode.org/project/scheduler/-/pipeline_schedules" title="branch pipeline results">branch pipeline results</a> first.

To check coding standards locally, either navigate into the scheduler folder and run <code>phpcs .</code> or from further up the folder hierarchy you need to specify the --standard parameter
<code>phpcs path/to/modules/scheduler --standard=path/to/modules/scheduler/phpcs.xml</code>

<h3 id='credits'>Credits</h3>
Scheduler is the work of many people. Some of them are listed here: http://drupal.org/node/3292/committers. But there are even more: All the people who created patches but did not check them in themselves, who posted bug or feature request and those who provided translations and documentation.

<h3 id='translations'>Translations</h3>
Translations to other languages than English can be found over there: http://localize.drupal.org/translate/projects/scheduler

<h3 id='screencasts'>Screencasts</h3>
If you want a quick introduction to what Scheduler does, check out these nice screencasts:
<ul>
<li><a href="https://www.ostraining.com/blog/drupal/ostips-the-drupal-scheduler-module/">Drupal 8 Scheduler module</a> by Rod Martin of OSTraining</li>
<li><a href="http://codekarate.com/daily-dose-of-drupal/drupal-7-scheduler-module">Drupal 7 Scheduler module</a> by Shane Thomas</li>
</ul>

# data[].attributes.body.processed
Scheduler gives editors the ability to schedule content, media, commerce products and taxonomy terms for publishing and unpublishing at specified dates and times in the future.

The 2.x branch introduced a plugin system to allow scheduled processing of more entity types, and plugins have been developed to schedule core Content, Media and Taxonomy Terms, and Commerce Products. The 8.x-1.x branch can only schedule nodes.

To use calendar popups in Drupal 7 you need to install the Date Popup module, which is part of the Date module. From Drupal 8+ this is built into Core.

Scheduler integration with other modules

If you use the core Content Moderation module then you should also install the Scheduler Content Moderation Integration sub-module

Scheduler integrates with the Workbench Moderation module

Scheduler provides Conditions, Actions and Events for use in the Rules module

When generating new test content via Devel Generate Scheduler can add publishing and unpublishing dates automatically

Scheduler provides drush commands to run Scheduler's lightweight cron

Scheduler provides tokens for the scheduled dates

Branches, releases and Core version compatibility

The main development branch is 2.x and this is compatible with Drupal 8, 9, 10 and 11

For progress and help towards the next 2.x release check these 2.x issues

The 8.x-1.x branch is compatible with Drupal 8.9, all versions of Drupal 9 and Drupal 10 and will be compatible with 11.0 at least

Simple non-breaking changes that are done in 2.x will be back-ported to 8.x-1.x to help keep the codebase in line. But any major changes that would require significant reworking for 8.x-1.x might not be back-ported.

For progress towards the next Scheduler 8.x-1.x release you can help on these 8.x-1.x tasks

The latest version for Drupal 7 is 7.x-1.7 released in November 2023

You can review and test any outstanding 7.x tasks

Notes

Now that DrupalCI is no longer testing against patches, if you want to contribute please use the Gitlab Merge Request process.

If Scheduler does not publish your scheduled nodes please check if cron is running correctly. You may find the Drupal documentation on setting up cron jobs helpful.

Scheduler only publishes and unpublishes nodes. If you want to schedule any other activity check out Workflow, Rules, Actions and Job Scheduler.

Here is an excellent alternative view of the entire Scheduler issue queue on Contrib Kanban

Coding Standards

The Scheduler codebase passes all the standards checks run via PHPCS and ESLINT. The project has its own phpcs.xml config file. If you think there are coding standards that need to be fixed please check the branch pipeline results first.

To check coding standards locally, either navigate into the scheduler folder and run phpcs . or from further up the folder hierarchy you need to specify the --standard parameter
phpcs path/to/modules/scheduler --standard=path/to/modules/scheduler/phpcs.xml

Credits

Scheduler is the work of many people. Some of them are listed here: http://drupal.org/node/3292/committers. But there are even more: All the people who created patches but did not check them in themselves, who posted bug or feature request and those who provided translations and documentation.

Translations

Translations to other languages than English can be found over there: http://localize.drupal.org/translate/projects/scheduler

Screencasts

If you want a quick introduction to what Scheduler does, check out these nice screencasts:

Drupal 8 Scheduler module by Rod Martin of OSTraining

Drupal 7 Scheduler module by Shane Thomas

Back to top

# data[].attributes.body.summary
Gives editors the ability to schedule content, media, commerce products and taxonomy terms for publishing and unpublishing at specified dates and times in the future. 

# data[].attributes.body.value
This module allows you to add attributes to your menu links or their wrapping
elements.
Installation ☝️

Enable Menu Link Attributes module

Grant Use menu link attributes permission to users which should be able to set attributes on menu items

Set available attributes on /admin/config/menu_link_attributes/config

Screencasts 📺

Installation

Container attributes

Other widgets for editing attributes

Container attributes
In order to provide attributes for containers (wrapping
elements) you simply need to create a new attribute starting with container_, those will be applied on the container automatically.
Optional dependency

YAML Editor - Loads an Ace editor which makes YAML editing more fun

# data[].attributes.body.processed
This module allows you to add attributes to your menu links or their wrapping

elements.

Installation ☝️

Enable Menu Link Attributes module

Grant Use menu link attributes permission to users which should be able to set attributes on menu items

Set available attributes on /admin/config/menu_link_attributes/config

Screencasts 📺

Installation

Container attributes

Other widgets for editing attributes

Container attributes

In order to provide attributes for containers (wrapping

elements) you simply need to create a new attribute starting with container_, those will be applied on the container automatically.

Optional dependency

YAML Editor - Loads an Ace editor which makes YAML editing more fun

Back to top

# data[].attributes.body.summary
This module allows you to add attributes to your menu links or their wrapping
elements.

# data[].attributes.body.value
Introduction
This module provides the following features that are not available in Drupal 8+ core bulk form:

Batching of operations with configurable batch size ensuring no timeouts.

Simple and well documented API for creating custom actions.

Preliminary action configuration on the view admin page or directly in view config yaml.

Simple and well documented API for creating custom actions.

End-user configuration form implemented with an action class method instead of workaraounds.

Confirmation step.

Selection persistent across all view pages.

Release information
The main difference between 4.1.x and 4.2.x is that the first one still works with PHP 7.3, while 4.2.x requires at least PHP 7.4.
Usage
After enabling the module, a new global field named "Views bulk operations" will become available in every view. To enable Views Bulk Operations for the view, just add and configure this field, if the core bulk operations field is enabled (for example Node operations bulk form for the "Content" view), that field needs to be replaced with the Views bulk operations field.
Complementary modules

Views Bulk Edit provides an action to edit selected entity fields' values.

VBO export allows exporting of the selected view rows to Excel xlsx or csv.

Push Notifications allows sending customized Push Notifications via Firebase Cloud Messaging (FCM).

Group Actions that provide useful actions for the Group module.

Courier UI for sending templated messages with token support to selected users.

VBO Action Kit that contains additional smaller actions both for site builders and to help developers to find reference code. Contributions and ideas welcome

Actions Permissions
A module called Actions Permissions is included in the package. This module generates a permission for each action, and VBO honors those permissions before showing or executing the corresponding actions. This is useful if you want to provide your VBO to several groups of users with different privileges: the same view will accommodate those different groups, showing to each the actions that they are permitted to see.
Drupal 7
7.x-3.x requires Entity API. For Drupal 7 also Rules actions can be used.
Complementary modules (Drupal 7)

Administration Views uses VBO to provide overrides for the standard administration listing pages for nodes, comments, users, and taxonomies.

Rules can be used to create custom actions to use with Views Bulk Operations. It can also be used to call bulk operation views programmatically.

Improved Admin provides, well, improved admin pages using VBO.

Total Control is an administrator dashboard that uses VBO.

Views Send allows sending mass emails using VBO.

VBO Context menu provides a context menu for VBO, where all operations available to the VBO show up on right click.

Views Block in Views Hacks exposes blocks as Views objects that can be administered using a dedicated VBO.

Language assignment provides an action to change a nodes' language.

VBO export allows exporting of the selected view rows to Excel xlsx or csv.

# data[].attributes.body.processed
Back to top
Introduction

This module provides the following features that are not available in Drupal 8+ core bulk form:

Batching of operations with configurable batch size ensuring no timeouts.

Simple and well documented API for creating custom actions.

Preliminary action configuration on the view admin page or directly in view config yaml.

Simple and well documented API for creating custom actions.

End-user configuration form implemented with an action class method instead of workaraounds.

Confirmation step.

Selection persistent across all view pages.

Back to top
Release information

The main difference between 4.1.x and 4.2.x is that the first one still works with PHP 7.3, while 4.2.x requires at least PHP 7.4.
Back to top
Usage

After enabling the module, a new global field named "Views bulk operations" will become available in every view. To enable Views Bulk Operations for the view, just add and configure this field, if the core bulk operations field is enabled (for example Node operations bulk form for the "Content" view), that field needs to be replaced with the Views bulk operations field.
Back to top
Complementary modules

Views Bulk Edit provides an action to edit selected entity fields' values.

VBO export allows exporting of the selected view rows to Excel xlsx or csv.

Push Notifications allows sending customized Push Notifications via Firebase Cloud Messaging (FCM).

Group Actions that provide useful actions for the Group module.

Courier UI for sending templated messages with token support to selected users.

VBO Action Kit that contains additional smaller actions both for site builders and to help developers to find reference code. Contributions and ideas welcome

Back to top
Actions Permissions

A module called Actions Permissions is included in the package. This module generates a permission for each action, and VBO honors those permissions before showing or executing the corresponding actions. This is useful if you want to provide your VBO to several groups of users with different privileges: the same view will accommodate those different groups, showing to each the actions that they are permitted to see.
Back to top
Drupal 7

7.x-3.x requires Entity API.

For Drupal 7 also Rules actions can be used.

Complementary modules (Drupal 7)

Administration Views uses VBO to provide overrides for the standard administration listing pages for nodes, comments, users, and taxonomies.

Rules can be used to create custom actions to use with Views Bulk Operations. It can also be used to call bulk operation views programmatically.

Improved Admin provides, well, improved admin pages using VBO.

Total Control is an administrator dashboard that uses VBO.

Views Send allows sending mass emails using VBO.

VBO Context menu provides a context menu for VBO, where all operations available to the VBO show up on right click.

Views Block in Views Hacks exposes blocks as Views objects that can be administered using a dedicated VBO.

Language assignment provides an action to change a nodes' language.

VBO export allows exporting of the selected view rows to Excel xlsx or csv.

Back to top

# data[].attributes.body.summary
Allows applying actions to multiple items in a view. Operations are performed in batches, to avoid timeouts. Supports custom actions, confirmation steps, selection across all view results, and more.

# data[].attributes.body.value
Views infinite scroll allows you to load and display pages of any view inline, using AJAX (this has been called infinite scrolling, load more, autopaging, endless pages and more). The pager can be triggered with the press of a button or automatically as the user scrolls to the bottom of the view's content.

The Drupal 8 version of Views Infinite Scroll is a lightweight solution which:

<ul>
  <li>Works with the existing views AJAX system, no 3rd party libraries required.</li>
  <li>Works with AJAX exposed filters.</li>
  <li>Can be enabled on any view (block, page or otherwise).</li>
</ul>

Note: Views Infinite Scroll requires "<strong>Use AJAX</strong>" Option to be set as "<strong>YES</strong>" under Advanced Option in your view.

Find out about the Drupal 7 version <a href="https://www.drupal.org/node/816724/revisions/7737451/view">here</a>.

<img src="https://www.drupal.org/files/issues/screencast%202016-02-03%2019-05-51-2.gif" />

<h3>Views Infinite Scroll powered pages:</h3>
<ul>
<li>
<a href="http://gochicorgohome.com">Go Chic or Go Home</a> by <a href="http://drupal.org/user/367845">rjbrown99</a></li>
<li>Using this module? <a href="https://www.drupal.org/node/2661024">Let us know</a>.</li>
</ul>

<h3>Drupal 7</h3>
The 7.x-1.x version is based on an autopager library using jQuery, however 7.x-2.x has been updated to use just the AJAX functionality already packaged with views, however it is somewhat experimental and hasn't been battle-tested.

<h3> Credits </h3>
Views Infinite Scroll Logo by <a href="https://www.drupal.org/u/grienauer">Nico Grienauer (Grienauer)</a>

# data[].attributes.body.processed
Views infinite scroll allows you to load and display pages of any view inline, using AJAX (this has been called infinite scrolling, load more, autopaging, endless pages and more). The pager can be triggered with the press of a button or automatically as the user scrolls to the bottom of the view's content.

The Drupal 8 version of Views Infinite Scroll is a lightweight solution which:

Works with the existing views AJAX system, no 3rd party libraries required.

Works with AJAX exposed filters.

Can be enabled on any view (block, page or otherwise).

Note: Views Infinite Scroll requires "Use AJAX" Option to be set as "YES" under Advanced Option in your view.

Find out about the Drupal 7 version here.

Views Infinite Scroll powered pages:

Go Chic or Go Home by rjbrown99

Using this module? Let us know.

Drupal 7

The 7.x-1.x version is based on an autopager library using jQuery, however 7.x-2.x has been updated to use just the AJAX functionality already packaged with views, however it is somewhat experimental and hasn't been battle-tested.

Credits

Views Infinite Scroll Logo by Nico Grienauer (Grienauer)
Back to top

# data[].attributes.body.value
Provides an interface for using the features of the Crop API. This element provides an UX for using a crop on all fields images or file elements. This module has particularity to purpose capability to crop the same image by “Crop type” configured. It’s very useful for editorial sites or media management sites.
Requirements
Module Crop API. Library Cropper.
Recommended modules
All of these modules are supported and tested with Image Widget Crop. Crop API : Provides basic API for images cropping. IMCE : Now supported by all versions of Image Widget Crop. We just have an option to enable of image_crop elements to use it. File (Field) Paths : We support this module and work with Image Widget Crop. Bootstrap : During lot of efforts to made compatibility with Boostrap all themes are compatible with Image Widget Crop Thank to @markcarver for his precious help. Entity Browser : Fully supported by this module. File Entity (fieldable files) : Fully compatible with this module too. Automated Crop : Soon Image Widget Crop use this service to provide a powerful feature (Automatic crop).
How to contribute
Check roadmap meta issue in order to see what current focus of development is. If you find any flaws, please submit an issue.
Project maintainers

woprrr

slashrsm

dqd

phenaproxima

Thanks to browserstack.com for help by testing our UI.
Acknowledgements
Special Thanks to Janez Urevc (@slashrsm) for his support and mentoring.
Similar projects and how they are different
Focal Point : Different because this is a focal approach to crop image. But similar by using Crop API too.

# data[].attributes.body.processed
Provides an interface for using the features of the Crop API. This element provides an UX for using a crop on all fields images or file elements. This module has particularity to purpose capability to crop the same image by “Crop type” configured. It’s very useful for editorial sites or media management sites.

Requirements

Module Crop API. Library Cropper.

Recommended modules

All of these modules are supported and tested with Image Widget Crop.

Crop API : Provides basic API for images cropping.
IMCE : Now supported by all versions of Image Widget Crop. We just have an option to enable of image_crop elements to use it.
File (Field) Paths : We support this module and work with Image Widget Crop.
Bootstrap : During lot of efforts to made compatibility with Boostrap all themes are compatible with Image Widget Crop Thank to @markcarver for his precious help.
Entity Browser : Fully supported by this module.
File Entity (fieldable files) : Fully compatible with this module too.
Automated Crop : Soon Image Widget Crop use this service to provide a powerful feature (Automatic crop).

How to contribute

Check roadmap meta issue in order to see what current focus of development is.

If you find any flaws, please submit an issue.

Project maintainers

woprrr

slashrsm

dqd

phenaproxima

Thanks to browserstack.com for help by testing our UI.

Acknowledgements

Special Thanks to Janez Urevc (@slashrsm) for his support and mentoring.

Similar projects and how they are different

Focal Point : Different because this is a focal approach to crop image. But similar by using Crop API too.
Back to top

# data[].attributes.body.value
Entity Embed allows any entity to be embedded within a text area using a WYSIWYG editor.
Requirements

8.x-1.x

Editor (included with Drupal core).

Embed

7.x-3.x

Editor

Entity Reference

Installation

Entity Embed can be installed via the standard Drupal installation process.

Configuration

Go to the Text formats and editors configuration page: /admin/config/content/formats, and for each text format/editor combo where you want to embed entities, do the following:

Enable the Display embedded entities filter for the desired text formats on the Text Formats configuration page.

Drag and drop the 'E' button into the Active toolbar.

If the text format uses the Limit allowed HTML tags and correct faulty HTML filter, ensure the necessary tags and attributes were automatically added: appears in the Allowed HTML tags setting.

If you're using both the Align images and Caption images filters make sure the Align images filter is run before the Caption images filter in the Filter processing order section. (Explanation: Due to the implementation details of the two filters it is important to execute them in the right sequence in order to obtain a sensible final markup. In practice this means that the alignment filter has to be run before the caption filter, otherwise the alignment class will appear inside the
tag (instead of appearing on it) the caption filter produces.)

Notice: If you were using the module in very early pre-alpha stages you might need to add data-entity-id to the list of allowed attributes. Similarly, if you have been using the module in pre-beta stages, you need to add the data-entity-embed-settings attribute. The 7.x releases always require the data-entity-id attribute.
Resources

Demo video by Chandan Singh the incredible GSOC 2014 student who helped drive this module forward.

Related Modules

URL Embed: allows URLs to be embedded within a text area using a WYSIWYG editor.

Entity Browser: When enabled, offers a more advanced embedded entity selection workflow.

Media: When embedding file entities, allows files to be selected using the media browser.

# data[].attributes.body.processed
Entity Embed allows any entity to be embedded within a text area using a WYSIWYG editor.
Back to top
Requirements

8.x-1.x

Editor (included with Drupal core).

Embed

7.x-3.x

Editor

Entity Reference

Back to top
Installation

Entity Embed can be installed via the standard Drupal installation process.

Back to top
Configuration

Go to the Text formats and editors configuration page: /admin/config/content/formats, and for each text format/editor combo where you want to embed entities, do the following:

Enable the Display embedded entities filter for the desired text formats on the Text Formats configuration page.

Drag and drop the 'E' button into the Active toolbar.

If the text format uses the Limit allowed HTML tags and correct faulty HTML filter, ensure the necessary tags and attributes were automatically added:
appears in the Allowed HTML tags setting.

If you're using both the Align images and Caption images filters make sure the Align images filter is run before the Caption images filter in the Filter processing order section. (Explanation: Due to the implementation details of the two filters it is important to execute them in the right sequence in order to obtain a sensible final markup. In practice this means that the alignment filter has to be run before the caption filter, otherwise the alignment class will appear inside the
tag (instead of appearing on it) the caption filter produces.)

Notice: If you were using the module in very early pre-alpha stages you might need to add data-entity-id to the list of allowed attributes. Similarly, if you have been using the module in pre-beta stages, you need to add the data-entity-embed-settings attribute.

The 7.x releases always require the data-entity-id attribute.
Back to top
Resources

Demo video by Chandan Singh the incredible GSOC 2014 student who helped drive this module forward.

Back to top
Related Modules

URL Embed: allows URLs to be embedded within a text area using a WYSIWYG editor.

Entity Browser: When enabled, offers a more advanced embedded entity selection workflow.

Media: When embedding file entities, allows files to be selected using the media browser.

Back to top

# data[].attributes.body.summary
Entity Embed allows any entity to be embedded within a text area using a WYSIWYG editor.

# data[].relationships.field_project_images.data[].meta.alt
Embedding the Druplicon into a textarea using CKEditor.

# data[].attributes.body.value
This module provides a CSV encoder for the Drupal Serialization API. This enables the CSV format to be used for data input and output in various circumstances. For example:

Drupal's REST module can accept or return data in CSV format

Views can output CSV data via a 'REST Export' view

Module developers may leverage CSV as a format when using the Serialization API

Requirements
You should use Composer to manage your Drupal site dependencies. This may require several modifications to your application's root composer.json. You must modify your composer.json in accordance with the linked documentation before following the installation instructions. Please read the documentation if you are not familiar with the specifics of managing a Drupal site with Composer.
Composer alternative
This module supports Ludwig, a manual alternative to managing Drupal modules with Composer.
Installation

Download the csv_serialization module via Composer: composer require drupal/csv_serialization. This will only work if your Drupal application meets the requirements listed above. Alternatively, you may use Ludwig.

Enable modules: rest, csv_serialization

How to create a CSV view

Create a new view

Add a "Rest Export" display to the view

Check ONLY "csv" for Accepted request formats under Format -> Serializer -> Settings

Set a path for the View display under Path Settings

Change Format -> Show to "fields"
Add fields to the view

Verify that content exists which should be displayed in the view

Save the view

Visit the path that you set for the view

A CSV file should be automatically downloaded when you visit the URL

Notes about the CSV encoder
The CSV format has a number of inherent limitations not present in other formats (e.g., JSON or XML). Namely, they are:

A CSV cannot accurately represent the data in an array with a depth greater two. Cell contents must be flattened into a string, which at most represents single-dimensional imploded values.

Each row in a CSV must share a common set of headers with all other rows.

For these reasons, the CSV format is not well-suited for encoding all data structures--only data with a specific structure. The provided CSV encoder does not support data structures that do not meet these limitations.
Related Modules

Views Rest Feed permits a "Rest export feed" view display to be attached to another View display as a feed, in the same way that RSS feeds may be attached.

# data[].attributes.body.processed
This module provides a CSV encoder for the Drupal Serialization API. This enables the CSV format to be used for data input and output in various circumstances. For example:

Drupal's REST module can accept or return data in CSV format

Views can output CSV data via a 'REST Export' view

Module developers may leverage CSV as a format when using the Serialization API

Requirements

You should use Composer to manage your Drupal site dependencies. This may require several modifications to your application's root composer.json. You must modify your composer.json in accordance with the linked documentation before following the installation instructions. Please read the documentation if you are not familiar with the specifics of managing a Drupal site with Composer.

Composer alternative

This module supports Ludwig, a manual alternative to managing Drupal modules with Composer.

Installation

Download the csv_serialization module via Composer: composer require drupal/csv_serialization. This will only work if your Drupal application meets the requirements listed above. Alternatively, you may use Ludwig.

Enable modules: rest, csv_serialization

How to create a CSV view

Create a new view

Add a "Rest Export" display to the view

Check ONLY "csv" for Accepted request formats under Format -> Serializer -> Settings

Set a path for the View display under Path Settings

Change Format -> Show to "fields"

Add fields to the view

Verify that content exists which should be displayed in the view

Save the view

Visit the path that you set for the view

A CSV file should be automatically downloaded when you visit the URL

Notes about the CSV encoder

The CSV format has a number of inherent limitations not present in other formats
(e.g., JSON or XML). Namely, they are:

A CSV cannot accurately represent the data in an array with a depth greater two. Cell contents must be flattened into a string, which at most represents single-dimensional imploded values.

Each row in a CSV must share a common set of headers with all other rows.

For these reasons, the CSV format is not well-suited for encoding all data structures--only data with a specific structure. The provided CSV encoder does not support data structures that do not meet these limitations.

Related Modules

Views Rest Feed permits a "Rest export feed" view display to be attached to another View display as a feed, in the same way that RSS feeds may be attached.

Back to top

# data[].attributes.body.value
Background
The Drupal 8+ configuration management works best when importing and exporting the whole set of the sites configuration. However, sometimes developers like to opt out of the robustness of CM and have a super-set of configuration active on their development machine and deploy only a subset. The canonical example for this is to have the devel module enabled or having a few block placements or views in the development environment and then not export them into the set of configuration to be deployed, yet still being able to share the development configuration with colleagues. This module allows to define sets of configuration that will get exported to separate directories when exporting, and get merged together when importing. It is possible to define in settings.php which of these sets should be active and considered for the export and import.
Documentation
Video and Slides from the Drupalcon Vienna presentation. Help to improve the online documentation.
Notice
The important part to remember is to use Drupal 8s configuration management the way it was intended to be used. This module does not interfere with the active configuration but instead filters on the import/export pipeline. If you use this module you should have a staging environment where you can let the configuration management do its job and verify that everything is good for deployment.
How it works
When importing config, the configuration is read from the main sync directory and also from split directories. Drupal is presented with the unified configuration of the sync directory and the extra configuration defined in splits. Importing and exporting works the same way as before, except some configuration is read from and written to different directories. Importing configuration still removes configuration not present in the files. Thus, the robustness and predictability of the configuration management remains.
Upgrade from version 1.x to 2.x
Be sure to run the update hooks so that the configuration is switched to use the new schema. As with any module update that changes configuration: do not forget to export the site configuration after the update hooks have run in your development environment. Attention: 1.x depended on Config Filter, but 2.x uses the core API. If you have not explicitly required Config Filter before Composer will remove it when updating. But then you are left with a drupal module still being installed but no longer available in the code base. In order to properly uninstall Config Filter you should explicitly require it and then uninstall it, and remove it from composer.json only in a later deployment. Key difference: 1.x could only split the whole config files. 2.x can split individual keys by creating a "config patch" file. This is turned on by default and you can switch it back to the 1.x behaviour by configuring your split to "Do not patch dependents".

# data[].attributes.body.processed
Back to top
Background

The Drupal 8+ configuration management works best when importing and exporting the whole set of the sites configuration. However, sometimes developers like to opt out of the robustness of CM and have a super-set of configuration active on their development machine and deploy only a subset. The canonical example for this is to have the devel module enabled or having a few block placements or views in the development environment and then not export them into the set of configuration to be deployed, yet still being able to share the development configuration with colleagues.

This module allows to define sets of configuration that will get exported to separate directories when exporting, and get merged together when importing. It is possible to define in settings.php which of these sets should be active and considered for the export and import.
Back to top
Documentation

Video and Slides from the Drupalcon Vienna presentation.

Help to improve the online documentation.
Back to top
Notice

The important part to remember is to use Drupal 8s configuration management the way it was intended to be used. This module does not interfere with the active configuration but instead filters on the import/export pipeline.
If you use this module you should have a staging environment where you can let the configuration management do its job and verify that everything is good for deployment.
Back to top
How it works

When importing config, the configuration is read from the main sync directory and also from split directories. Drupal is presented with the unified configuration of the sync directory and the extra configuration defined in splits.
Importing and exporting works the same way as before, except some configuration is read from and written to different directories. Importing configuration still removes configuration not present in the files. Thus, the robustness and predictability of the configuration management remains.
Back to top
Upgrade from version 1.x to 2.x

Be sure to run the update hooks so that the configuration is switched to use the new schema. As with any module update that changes configuration: do not forget to export the site configuration after the update hooks have run in your development environment.

Attention: 1.x depended on Config Filter, but 2.x uses the core API. If you have not explicitly required Config Filter before Composer will remove it when updating. But then you are left with a drupal module still being installed but no longer available in the code base.
In order to properly uninstall Config Filter you should explicitly require it and then uninstall it, and remove it from composer.json only in a later deployment.

Key difference: 1.x could only split the whole config files. 2.x can split individual keys by creating a "config patch" file. This is turned on by default and you can switch it back to the 1.x behaviour by configuring your split to "Do not patch dependents".
Back to top

# data[].attributes.body.value
Provides integration with bLazy and or Intersection Observer API (IO), or Native lazy loading to lazy load and multi-serve images to save bandwidth and server requests. The user will have faster load times and save data usage if they don't browse the whole page. A friend of mobile devices. Do not let images, especially iframes, kill mobile device traffics.
Requirements

3.x: PHP8+, core Media, and core Layout discovery for Blazy layout sub-module.

8.x-2.x: core Media.

8.x-1.x: core Image.

7.x: PHP 7.4+ since 1.4, core Image, libraries and one of autoloader modules, read more

bLazy library library (>= v1.6.0):

Download bLazy from https://github.com/dinbror/blazy

Extract it as is, rename blazy-master to blazy, so the assets are at: /libraries/blazy/blazy.min.js /libraries/blazy/blazy.js Ensures both files are present due to branch changes.

Since 8.x-2.6, it is no longer required. Instead included as a forked fallback to play nice between Native lazy, IO and old approaches, read more.

Versions

3.x: D9.4 - D11+.

8.x-2.x+: D8.8 - D10, archived. A transition from ME/ VEF to core Media.

8.x-1.x, dead as per VEF deprecation notice.

7.x requires a proper installation, see Installation. It supports optional contrib Media and Views. Has Intersection Observer API.

Installation

Manual:
Install the module as usual:

Blazy 7.x installation with autoloader. Drupal 7
Drupal 8

Composer:
Check out here.
Features

Works absurdly fine at IE9 for Blazy 2.6+.

Works without JavaScript within/without JavaScript browsers aka decoupled lazyload scripts since 2.6.

Works at AMP pages. Or static/ archived sites ala Tome, HTTrack, etc.

Supports modern Native lazyload since incubation before Firefox or core had it, or old data-[src|srcset] since eons.

Core Media with oEmbed, Image, Responsive image. Works with and elements.

CSS background lazyloading.

(Responsive|picture|plain) image, (remote|local) video within lightboxes (2.3+): builtin Flybox aka non-disruptive lightbox aka picture in picture window (2.17+), Magnific Popup, Colorbox, PhotoSwipe, Splidebox, etc. Be sure to read more.

A simple effortless CSS loading indicator.

Simple builtin shortcodes for inline galleries, hardcoded or entity-embed like, read more at /filter/tips.

It doesn't take over all images, so it can be enabled as needed via Blazy formatters, or its supporting modules.

Additional features

Blazy dynamic layout sub-module for Layout Builder since 3.0.1.

Supports SVG since 2.17.

Supports inline images and iframes with lightboxes via Blazy Filter.

CSS3 masonry, Grid Foundation, Flexbox, Native Grid for Views, fields, texts, Blazy Filter (8.x-2.5+). Also available as configurable layouts for Layout Builder since 3.0.1.

Usages
Enable Blazy UI which can be uninstalled at production later. Go to /admin/config/media/blazy to manage few global options.
Blazy as field formatters

Go to Manage display page, e.g.: /admin/structure/types/manage/page/display

Find Blazy formatter under Manage display.

Blazy Filter as HTML filter

Visit /admin/config/content/formats/full_html, etc.

Enable Blazy Filter.

Blazy Grid as Views style

Visit /admin/structure/views.

Add a new Blazy Grid under Format.

Blazy Layout for Layout Builder

Enable the included Blazy Layout sub-module at /admin/modules.

Visit any Layout Builder pages, normally at content entities like Content type Manage display pages for defaults, or /node/123/layout for its derivatives.

Add a Blazy dynamic layout when adding a section. Configure the amount of regions, a layout engine, and a few more options.

Programmatically: Check out blazy.api.php for details.
Enhancements
Blazy works with fields, and Views, and supports a few enhancements.

Integration

Ajaxin

Intersection Observer with IO Entity Browser

GridStack

Outlayer

Mason

Intense

Blazy PhotoSwipe

Slick

Slick Lightbox

Splide

Splidebox

Slick Browser

Slick Views

Jumper (Jump Anywhere)

Zooming

ElevateZoom Plus

Blazy Video Embed Field

Utimenu

Optional Features

Views fields: File ER and Media integration, see Slick Browser. Suitable for huge galleries with lightboxes, or multimedia switcher.

Views style plugin Blazy Grid: CSS3 Masonry and Block Grid Foundation, Native Grid.

Deprecated at 2.x for core Media: Blazy Video, Blazy Image with VEM via Video Embed Media.

How much can Blazy help performance?
This may vary, just a quick illustration on Blazy performance. On private benchmarks, Blazy saves a page with lots of images from 14MB to 3MB (A few jumbo slideshow images + tons of thumbnail previews), 200 http requests to 20, loading time 30s to 3s. Elevating performance grade from F/E to A/B via gtmetrix. Overall ~5-10x better. Combining Blazy with other performance tools such as AdvAgg, etc. will obviously make optimum results with less efforts.
Recommended modules
For better admin help page with markdown, either way will do:

composer require league/commonmark

Markdown

Troubleshootings

Check out troubleshooting.

Quick FAQS

Q: Is Blazy deprecated by core lazy loading attribute? A: As of this writing, native lazyloading only supports image and iframe, not DIV nor local video, etc. Depreciation might happen if core superseded or covered 90% features (CSS background, aspect ratio, lightboxes, carousel, masonry grid, fullscreen video, graceful degradation for oldies, media player etc.). All cosmetics, and the little details that Blazy has to offer with contrib integrations, colorbox, carousel, svg, animate.css, etc. are less likely entering core. Even if media players, lightboxes and carousels were in core, there are still some added values that Blazy can offer and do with contribs. A DRY buster ala CTools, in the least. Shortly, nope. Check out [#3172307]

Q: What is the correlation between lazy loading and Blazy Grid for texts and Views fields/ contents? Texts don't lazy load. A: The focus is lazy loading as noted in the Features. Around lazy loading, we have requirements to make image/ media fields displayed in a grid such as lightbox galleries. Grid for Texts and Views are just bonuses thanks to re-usability. Grid is also the recommended alternative to carousels based on some A/B testings.

Q: I don't use Media, why required? A: When you add a new plain old image says at /admin/structure/types/manage/page/fields/add-field, Drupal speaks authoritatively: Use Media reference fields for most files, images, audio, videos, and remote media. Use File or Image reference fields when creating your own media types, or for legacy files and images created before enabling the Media module. For more information, see the Media help page.

Q: Why are many modules dependent on Blazy? A: Read more 5-year-old noble intentions here. Shortly, DRY.

Known issues/ limitations

Blazy formatter embedded/ rewritten within Views UI Rewrite results has issues, check this and that out.

Blazy 7.x installation with autoloader.

Update SOP
Read update SOP whenever updating Blazy and its related modules. Whenever updating Blazy, please make sure Blazy's sub-modules are updated to their latest versions as well, read more.

Submitting issues or patches
Please check this out before submitting issues, or patches.

Upgrading from 1.x to 2.x or 3+
Upgrading from 1.x is not supported, yet. Meaning it will not automatically work without fixing the caveats below. Yet hardly an issue seeing the 2.x increasing installs. Should you need to upgrade, to minimize issues, do it one at a time, sequential, not parallel:

Core Drupal

Core Media (auto-installed, yet install it beforehand for safety)

Media entity (ME)

Video Embed Field (VEF)

Blazy and sub-modules (must be parallel here and match branch numbers _if available: 2.x for 2.x, etc.)

Be sure you succeed on upgrading them before proceeding to Blazy! Most reported issues are if you have ME and VEF. Both are optional integrations, the main reason for sequential upgrade, not Blazy's requirements. If you don't have them, a matter of matching sub-module branches.

Sequential number is expected:
1.x -> 2.x (contains deprecated stuffs to avoid WSOD) -> 3+. Jumping from 1.x to 3.x, bypassing 2.x, may likely cause WSOD due to added/ removed services, formatters, database updates, etc. which must be checked and performed in 2.x. New sites starting with branches 2.x or 3.x post D8.6 with core Media should be no issues here on.
Preparations:

Prepare for the worst! Backup aka restore point.

Inspirations: happy or sad

Change records: Twig, CSS and custom Breakpoints removed for core Responsive image. Deprecated stuffs, including formatters, are intact at 2.x to avoid WSOD till you have time to change them-- gone at 3.x, though.

Execution:

drush cr drush updb drush cr for each sequence. Or see update SOP for details. _If CLI drush updb failed, as a few reported, try Drupal UI. At best, drush cr, hardly failed.

Only if any issues, re-visit Blazy, Field or Views UI for new options, and re-save them as needed.

It should (hopefully) be as easy as upgrading Drupal. Best wishes!

Common error causes:
Mostly due to added/ removed services not being recognized.

Failing to clear cache.

Parallel upgrade. On the contrary, Blazy and sub-modules require parallel one.

Mismatched Blazy sub-module branches.

Upgrading from 2.x or 3+
Be sure to first update old Blazy and it's sub-modules to the latest 2.x, and fix Blazy error, if any, at admin status reports page before running the following. composer require drupal/slick_extras:^2.0 drupal/slick_views:^3.0 drupal/slick:^3.0 drupal/blazy:^3.0 -W -n drush cr drush updb drush cr This is what parallel upgrade is -- composer require them all once. Remove or add more sub-modules as needed. -W -n is not required, but handy and quick. Blazy 3.x moved Blazy UI sub-module into a sub-folder. No issues for composer as long as you follow Update SOP. Yet see OOT section below, or more in update SOP > WSOD if any issues. Only if you were still using VEF and stuck for a reason. Steps:

Replace Blazy Video (deprecated) formatter with BVEF at Field or Views UI before upgrading to 3.x.

Proceed with upgrade steps as outlined above, excluding Media (Entity) and VEF.

Failing to clear cache and mismatched branches are the most potential errors here on. Potential oversight for manual FTP upgrade. For Composer, it is smart and helpful with suggestions before proceeding to not trespass/ mismatch branches. See OOT below.
Notable lingering 1.x issues and fixes on 3.x
You are here at Blazy 3.x, and only applicable if Blazy formatter 1.x-2.x is never re-saved till 3.x since the removal of Breakpoints option at last 2.x-RC (8.x-2.0-rc7). Skip if Breakpoints option is never in sight (2.0 full release). The removal of old 1.x Breakpoints for Responsive image, see Preparations section above, may cause saving 3.x forms fail. It was no issues at 2.x, but would be at 3.x, when deprecated stuffs were removed. Solutions:

Open Blazy formatter form whether in Field UI Manage display, or Views UI LHS pages.

Hit Update or Apply buttons. This is the only cure to sync database and codebase.

Save the form.

This is another reason why 1.x upgrade is not supported due to no upgrade path is provided. The fix above is fairly easy, though.
OOT: FTP or GIT Upgrades
If using Composer locally, but using FTP or GIT repo (e.g. cPanel commands pulling from GIT) on productions, be sure to selectively delete (manually or with commands) old folders first, not merging the new folders with the old ones. Merging folders (normally where PHP lives like vendor, core, modules, themes, etc.) will definitely cause issues and headaches due to likely namespace re-location or organization. Composer takes care of old folder deletion, but not FTP nor GIT repo pull via cPanel, etc.

# data[].attributes.body.processed
Provides integration with bLazy and or Intersection Observer API (IO), or Native lazy loading to lazy load and multi-serve images to save bandwidth and server requests. The user will have faster load times and save data usage if they don't browse the whole page.
A friend of mobile devices. Do not let images, especially iframes, kill mobile device traffics.
Back to top
Requirements

3.x: PHP8+, core Media, and core Layout discovery for Blazy layout sub-module.

8.x-2.x: core Media.

8.x-1.x: core Image.

7.x: PHP 7.4+ since 1.4, core Image, libraries and one of autoloader modules, read more

bLazy library library (>= v1.6.0):

Download bLazy from https://github.com/dinbror/blazy

Extract it as is, rename blazy-master to blazy, so the assets are at:
/libraries/blazy/blazy.min.js
/libraries/blazy/blazy.js
Ensures both files are present due to branch changes.

Since 8.x-2.6, it is no longer required. Instead included as a forked fallback to play nice between Native lazy, IO and old approaches, read more.

Back to top
Versions

3.x: D9.4 - D11+.

8.x-2.x+: D8.8 - D10, archived. A transition from ME/ VEF to core Media.

8.x-1.x, dead as per VEF deprecation notice.

7.x requires a proper installation, see Installation. It supports optional contrib Media and Views. Has Intersection Observer API.

Back to top
Installation

Manual:

Install the module as usual:

Blazy 7.x installation with autoloader.
Drupal 7

Drupal 8

Composer:

Check out here.
Back to top
Features

Works absurdly fine at IE9 for Blazy 2.6+.

Works without JavaScript within/without JavaScript browsers aka decoupled lazyload scripts since 2.6.

Works at AMP pages. Or static/ archived sites ala Tome, HTTrack, etc.

Supports modern Native lazyload since incubation before Firefox or core had it, or old data-[src|srcset] since eons.

Core Media with oEmbed, Image, Responsive image. Works with and
elements.

CSS background lazyloading.

(Responsive|picture|plain) image, (remote|local) video within lightboxes (2.3+): builtin Flybox aka non-disruptive lightbox aka picture in picture window (2.17+), Magnific Popup, Colorbox, PhotoSwipe, Splidebox, etc. Be sure to read more.

A simple effortless CSS loading indicator.

Simple builtin shortcodes for inline galleries, hardcoded or entity-embed like, read more at /filter/tips.

It doesn't take over all images, so it can be enabled as needed via Blazy formatters, or its supporting modules.

Back to top
Additional features

Blazy dynamic layout sub-module for Layout Builder since 3.0.1.

Supports SVG since 2.17.

Supports inline images and iframes with lightboxes via Blazy Filter.

CSS3 masonry, Grid Foundation, Flexbox, Native Grid for Views, fields, texts, Blazy Filter (8.x-2.5+). Also available as configurable layouts for Layout Builder since 3.0.1.

Back to top
Usages

Enable Blazy UI which can be uninstalled at production later. Go to /admin/config/media/blazy to manage few global options.

Blazy as field formatters

Go to Manage display page, e.g.:
/admin/structure/types/manage/page/display

Find Blazy formatter under Manage display.

Blazy Filter as HTML filter

Visit /admin/config/content/formats/full_html, etc.

Enable Blazy Filter.

Blazy Grid as Views style

Visit /admin/structure/views.

Add a new Blazy Grid under Format.

Blazy Layout for Layout Builder

Enable the included Blazy Layout sub-module at /admin/modules.

Visit any Layout Builder pages, normally at content entities like Content type Manage display pages for defaults, or /node/123/layout for its derivatives.

Add a Blazy dynamic layout when adding a section. Configure the amount of regions, a layout engine, and a few more options.

Programmatically:
Check out blazy.api.php for details.
Back to top
Enhancements

Blazy works with fields, and Views, and supports a few enhancements.

Back to top
Integration

Ajaxin

Intersection Observer with IO Entity Browser

GridStack

Outlayer

Mason

Intense

Blazy PhotoSwipe

Slick

Slick Lightbox

Splide

Splidebox

Slick Browser

Slick Views

Jumper (Jump Anywhere)

Zooming

ElevateZoom Plus

Blazy Video Embed Field

Utimenu

Back to top
Optional Features

Views fields:
File ER and Media integration, see Slick Browser. Suitable for huge galleries with lightboxes, or multimedia switcher.

Views style plugin Blazy Grid:
CSS3 Masonry and Block Grid Foundation, Native Grid.

Deprecated at 2.x for core Media:
Blazy Video, Blazy Image with VEM via Video Embed Media.

Back to top
How much can Blazy help performance?

This may vary, just a quick illustration on Blazy performance. On private benchmarks, Blazy saves a page with lots of images from 14MB to 3MB (A few jumbo slideshow images + tons of thumbnail previews), 200 http requests to 20, loading time 30s to 3s. Elevating performance grade from F/E to A/B via gtmetrix. Overall ~5-10x better. Combining Blazy with other performance tools such as AdvAgg, etc. will obviously make optimum results with less efforts.
Back to top
Recommended modules

For better admin help page with markdown, either way will do:

composer require league/commonmark

Markdown

Back to top
Troubleshootings

Check out troubleshooting.

Back to top
Quick FAQS

Q: Is Blazy deprecated by core lazy loading attribute?
A: As of this writing, native lazyloading only supports image and iframe, not DIV nor local video, etc. Depreciation might happen if core superseded or covered 90% features (CSS background, aspect ratio, lightboxes, carousel, masonry grid, fullscreen video, graceful degradation for oldies, media player etc.). All cosmetics, and the little details that Blazy has to offer with contrib integrations, colorbox, carousel, svg, animate.css, etc. are less likely entering core. Even if media players, lightboxes and carousels were in core, there are still some added values that Blazy can offer and do with contribs. A DRY buster ala CTools, in the least. Shortly, nope. Check out [#3172307]

Q: What is the correlation between lazy loading and Blazy Grid for texts and Views fields/ contents? Texts don't lazy load.
A: The focus is lazy loading as noted in the Features. Around lazy loading, we have requirements to make image/ media fields displayed in a grid such as lightbox galleries. Grid for Texts and Views are just bonuses thanks to re-usability. Grid is also the recommended alternative to carousels based on some A/B testings.

Q: I don't use Media, why required?
A: When you add a new plain old image says at /admin/structure/types/manage/page/fields/add-field, Drupal speaks authoritatively:
Use Media reference fields for most files, images, audio, videos, and remote media. Use File or Image reference fields when creating your own media types, or for legacy files and images created before enabling the Media module. For more information, see the Media help page.

Q: Why are many modules dependent on Blazy?
A: Read more 5-year-old noble intentions here. Shortly, DRY.

Back to top
Known issues/ limitations

Blazy formatter embedded/ rewritten within Views UI Rewrite results has issues, check this and that out.

Blazy 7.x installation with autoloader.

Back to top
Update SOP

Read update SOP whenever updating Blazy and its related modules.

Whenever updating Blazy, please make sure Blazy's sub-modules are updated to their latest versions as well, read more.

Back to top
Submitting issues or patches

Please check this out before submitting issues, or patches.

Upgrading from 1.x to 2.x or 3+

Upgrading from 1.x is not supported, yet. Meaning it will not automatically work without fixing the caveats below. Yet hardly an issue seeing the 2.x increasing installs.

Should you need to upgrade, to minimize issues, do it one at a time, sequential, not parallel:

Core Drupal

Core Media (auto-installed, yet install it beforehand for safety)

Media entity (ME)

Video Embed Field (VEF)

Blazy and sub-modules (must be parallel here and match branch numbers _if available: 2.x for 2.x, etc.)

Be sure you succeed on upgrading them before proceeding to Blazy!
Most reported issues are if you have ME and VEF. Both are optional integrations, the main reason for sequential upgrade, not Blazy's requirements.
If you don't have them, a matter of matching sub-module branches.

Sequential number is expected:

1.x -> 2.x (contains deprecated stuffs to avoid WSOD) -> 3+.
Jumping from 1.x to 3.x, bypassing 2.x, may likely cause WSOD due to added/ removed services, formatters, database updates, etc. which must be checked and performed in 2.x.

New sites starting with branches 2.x or 3.x post D8.6 with core Media should be no issues here on.

Preparations:

Prepare for the worst! Backup aka restore point.

Inspirations: happy or sad

Change records: Twig, CSS and custom Breakpoints removed for core Responsive image. Deprecated stuffs, including formatters, are intact at 2.x to avoid WSOD till you have time to change them-- gone at 3.x, though.

Execution:

drush cr drush updb drush cr for each sequence. Or see update SOP for details. _If CLI drush updb failed, as a few reported, try Drupal UI. At best, drush cr, hardly failed.

Only if any issues, re-visit Blazy, Field or Views UI for new options, and re-save them as needed.

It should (hopefully) be as easy as upgrading Drupal. Best wishes!

Common error causes:

Mostly due to added/ removed services not being recognized.

Failing to clear cache.

Parallel upgrade. On the contrary, Blazy and sub-modules require parallel one.

Mismatched Blazy sub-module branches.

Upgrading from 2.x or 3+

Be sure to first update old Blazy and it's sub-modules to the latest 2.x, and fix Blazy error, if any, at admin status reports page before running the following.

composer require drupal/slick_extras:^2.0 drupal/slick_views:^3.0 drupal/slick:^3.0 drupal/blazy:^3.0 -W -n

drush cr
drush updb
drush cr

This is what parallel upgrade is -- composer require them all once. Remove or add more sub-modules as needed. -W -n is not required, but handy and quick.

Blazy 3.x moved Blazy UI sub-module into a sub-folder. No issues for composer as long as you follow Update SOP. Yet see OOT section below, or more in update SOP > WSOD if any issues.

Only if you were still using VEF and stuck for a reason. Steps:

Replace Blazy Video (deprecated) formatter with BVEF at Field or Views UI before upgrading to 3.x.

Proceed with upgrade steps as outlined above, excluding Media (Entity) and VEF.

Failing to clear cache and mismatched branches are the most potential errors here on.
Potential oversight for manual FTP upgrade. For Composer, it is smart and helpful with suggestions before proceeding to not trespass/ mismatch branches. See OOT below.

Notable lingering 1.x issues and fixes on 3.x

You are here at Blazy 3.x, and only applicable if Blazy formatter 1.x-2.x is never re-saved till 3.x since the removal of Breakpoints option at last 2.x-RC (8.x-2.0-rc7).

Skip if Breakpoints option is never in sight (2.0 full release).

The removal of old 1.x Breakpoints for Responsive image, see Preparations section above, may cause saving 3.x forms fail. It was no issues at 2.x, but would be at 3.x, when deprecated stuffs were removed.
Solutions:

Open Blazy formatter form whether in Field UI Manage display, or Views UI LHS pages.

Hit Update or Apply buttons. This is the only cure to sync database and codebase.

Save the form.

This is another reason why 1.x upgrade is not supported due to no upgrade path is provided. The fix above is fairly easy, though.

OOT: FTP or GIT Upgrades

If using Composer locally, but using FTP or GIT repo (e.g. cPanel commands pulling from GIT) on productions, be sure to selectively delete (manually or with commands) old folders first, not merging the new folders with the old ones. Merging folders (normally where PHP lives like vendor, core, modules, themes, etc.) will definitely cause issues and headaches due to likely namespace re-location or organization. Composer takes care of old folder deletion, but not FTP nor GIT repo pull via cPanel, etc.

Back to top

# data[].attributes.body.summary
Provides integration with bLazy and other tools to reduce page load times and save bandwidth. This improves user experience especially on mobile devices. 