# 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.

Sub-pathauto (D7, D8) 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!

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)

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.

Sub-pathauto (D7, D8) 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!

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)

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.summary
Automatically generate URL aliases for any entity (such as content and terms). Define conditional patterns for consistent aliases. Bulk generate and delete existing aliases.

# 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.

Admin Toolbar Extra Tools Confirmations shows a JavaScript confirmation dialog when clicking links relating to flushing caches, but only when on a production site.

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

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

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

3. 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.

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

5. 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.

Admin Toolbar Extra Tools Confirmations shows a JavaScript confirmation dialog when clicking links relating to flushing caches, but only when on a production site.

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:

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

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

3. 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.

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

5. 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

Token

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.

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.

Full support for entity revisions and workflows based upon revision editing.

Customize meta tags for custom pages built using Views using included submodules.

Individual permissions for each meta tag can be added via the Metatag Advanced Permissions.

Extendable and flexible API for defining new meta tags.

Resources

Full documentation is available: Metatag for Drupal

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.

Recommended / related modules
Some modules are available that extend Metatag with additional or complimentary functionality. Many related modules are available from the Metatag ecosystem page and that is the best place to find them. The following are a noteworthy additions to Metatag's main functionality:

Context Metadata: Allow assignment of meta tags based upon different system contexts, e.g. per path.

ECA Metatag: Use Event-Condition-Action rules to dynamically set meta tags.

Maxlength: If this module is installed, meta tags that have a maximum length defined in the settings will have that maximum length enforced; this may be disabled in the settings if it proves to be problematic.

Metatag AI: AI-powered metadata generation and suggestions.

Metatag Async Widget: Provides an asynchronous widget for editing meta tags.

Metatag Page Heading: Automatically generates meta tags using page headings.

Metatag Webform: Adds meta tag support to Webform pages.

Real-time SEO for Drupal: Uses the [YoastSEO.js library and service](https://yoast.com/) to provide realtime feedback on the meta tags.

Token Custom: Allows creation of custom tokens without writing code.

Token Modifier: Modify or transform token output before being used in metadata.

Token OR: Provides a means to output a second token if the first one is empty, which can be very useful for complex content architectures.

The following modules make additional meta tags available:

Metatag Cxense: Adds support for the Cxense meta tags used by their DMP and Insight services.

Metatag Google Scholar: Adds support for a number of meta tags used with the Google Scholar system.

Schema.org Metatag: Extensive solution for adding schema.org / JSON-LD support to Metatag.

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

Token

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.

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.

Full support for entity revisions and workflows based upon revision editing.

Customize meta tags for custom pages built using Views using included submodules.

Individual permissions for each meta tag can be added via the Metatag Advanced Permissions.

Extendable and flexible API for defining new meta tags.

Resources

Full documentation is available: Metatag for Drupal

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.

Recommended / related modules

Some modules are available that extend Metatag with additional or complimentary functionality. Many related modules are available from the Metatag ecosystem page and that is the best place to find them.

The following are a noteworthy additions to Metatag's main functionality:

Context Metadata:
Allow assignment of meta tags based upon different system contexts, e.g. per
path.

ECA Metatag:
Use Event-Condition-Action rules to dynamically set meta tags.

Maxlength:
If this module is installed, meta tags that have a maximum length defined in
the settings will have that maximum length enforced; this may be disabled in
the settings if it proves to be problematic.

Metatag AI:
AI-powered metadata generation and suggestions.

Metatag Async Widget:
Provides an asynchronous widget for editing meta tags.

Metatag Page Heading:
Automatically generates meta tags using page headings.

Metatag Webform:
Adds meta tag support to Webform pages.

Real-time SEO for Drupal:
Uses the [YoastSEO.js library and service](https://yoast.com/) to provide
realtime feedback on the meta tags.

Token Custom:
Allows creation of custom tokens without writing code.

Token Modifier:
Modify or transform token output before being used in metadata.

Token OR:
Provides a means to output a second token if the first one is empty, which can
be very useful for complex content architectures.

The following modules make additional meta tags available:

Metatag Cxense:
Adds support for the Cxense meta tags used by their DMP and Insight services.

Metatag Google Scholar:
Adds support for a number of meta tags used with the Google Scholar system.

Schema.org Metatag:
Extensive solution for adding schema.org / JSON-LD support to Metatag.

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
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
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) has new features, bug fixes, and performance improvements with deprecated sub-modules moved to a dedicated project and only for Drupal 10.3.x+ and Drupal 11.

Webform 6.2.x (for Drupal 10.2.x+) is the same as Webform 6.1.x with deprecated code removed and only for Drupal 10.2.x+. This branch will receive minimal bug fixes until some time after 6.3.x has a full release. Further changes 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) has new features, bug fixes, and performance improvements with deprecated sub-modules moved to a dedicated project and only for Drupal 10.3.x+ and Drupal 11.

Webform 6.2.x (for Drupal 10.2.x+) is the same as Webform 6.1.x with deprecated code removed and only for Drupal 10.2.x+. This branch will receive minimal bug fixes until some time after 6.3.x has a full release. Further changes 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
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
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
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

ALTCHA Captcha

Friendly Captcha

Cloudflare turnstile

reCAPTCHA

Captcha Riddler

CAPTCHA after

Nocaptcha Recaptcha

Draggable CAPTCHA

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.

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: 2025-09-23)
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

ALTCHA Captcha

Friendly Captcha

Cloudflare turnstile

reCAPTCHA

Captcha Riddler

CAPTCHA after

Nocaptcha Recaptcha

Draggable CAPTCHA

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.

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: 2025-09-23)
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. Further CAPTCHA types are supported via contrib modules.

# 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
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:

Image widget crop

Focal point

Technical details
Initial discussion can be found on manual crop issue queue. Crop API logo was created by @woprrr.

# 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:

Image widget crop

Focal point

Technical details

Initial discussion can be found on manual crop issue queue.

Crop API logo was created by @woprrr.

# 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.
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 module (in the version for Drupal 8+):
Database search
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.
Tutorials and screencasts
The Getting started documentation page and the external material available (screencasts, etc.) might provide a good introduction to the module.
Other available backends and extensions
Please see the list of Search API Ecosystem modules and curated list of Extension modules. If you maintain or encounter a great Search API module, feel free to add it.
Requirements
To use the Views integration, you'll (of course) also need the Views module. For facets, you'll need the Facets module. 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.
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 module (in the version for Drupal 8+):

Database search

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.
Back to top
Tutorials and screencasts

The Getting started documentation page and the external material available (screencasts, etc.) might provide a good introduction to the module.
Back to top
Other available backends and extensions

Please see the list of Search API Ecosystem modules and curated list of Extension modules. If you maintain or encounter a great Search API module, feel free to add it.
Back to top
Requirements

To use the Views integration, you'll (of course) also need the Views module. For facets, you'll need the Facets module.
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
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.

As of version 11.3, Drupal core provides link autocomplete suggestions in CKEditor similar to what this module does. Sites using or considering using Linkit should evaluate whether they can use the core solution instead of Linkit. Here is a list of features Linkit has that aren't currently included in Drupal core's version:

Ability to configure which types of links will be shown in autocomplete suggestions, and how to group them

Ability to create multiple Linkit "profiles" to be used on different text formats

Linkit-styled autocomplete suggestions for link fields (core already has this, but it's entity suggestions don't have the configuration options below)

Ability to configure metadata (with token support) for autcomplete suggestions; for example, showing the authoring information, published state for each suggestion

Ability to configure the number of suggestions shown

Ability to toggle published/unpublished entities in suggestions

A Drupal form element for hyperlinks, allowing developers to use autocomplete functionality in custom Field Widgets

An extendable plugin type for "Matchers," which determine what types of links can be suggested. Linkit includes a front page matcher, external link matcher, email address matcher, as well as matchers for user, taxonomy, media, and contact form entities.

An extendable plugin type for "Substitutions" to customize what a match should render as

For media entities, the ability to configure whether to link to the media entity URL or direct download

Configuration

1. 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.

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

3. Link media to the actual file

4. Remove links to unpublished or non-existent pages

5. Use Linkit with menu links

6. Use Linkit with link fields

Related modules

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

Version Status

7.0.x (Drupal >10.1 and Drupal 11; drops CKEditor 4 support)

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!: Supported until November 2025)

6.0.x (Drupal 9.5.x and 10.0): No further development

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.

As of version 11.3, Drupal core provides link autocomplete suggestions in CKEditor similar to what this module does. Sites using or considering using Linkit should evaluate whether they can use the core solution instead of Linkit. Here is a list of features Linkit has that aren't currently included in Drupal core's version:

Ability to configure which types of links will be shown in autocomplete suggestions, and how to group them

Ability to create multiple Linkit "profiles" to be used on different text formats

Linkit-styled autocomplete suggestions for link fields (core already has this, but it's entity suggestions don't have the configuration options below)

Ability to configure metadata (with token support) for autcomplete suggestions; for example, showing the authoring information, published state for each suggestion

Ability to configure the number of suggestions shown

Ability to toggle published/unpublished entities in suggestions

A Drupal form element for hyperlinks, allowing developers to use autocomplete functionality in custom Field Widgets

An extendable plugin type for "Matchers," which determine what types of links can be suggested. Linkit includes a front page matcher, external link matcher, email address matcher, as well as matchers for user, taxonomy, media, and contact form entities.

An extendable plugin type for "Substitutions" to customize what a match should render as

For media entities, the ability to configure whether to link to the media entity URL or direct download

Back to top
Configuration

1. 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.

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

3. Link media to the actual file

4. Remove links to unpublished or non-existent pages

5. Use Linkit with menu links

6. Use Linkit with link fields

Back to top
Related modules

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

Back to top
Version Status

7.0.x (Drupal >10.1 and Drupal 11; drops CKEditor 4 support)

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!: Supported until November 2025)

6.0.x (Drupal 9.5.x and 10.0): No further development

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 functionality for Drupal link interfaces. Linkit supports nodes, users, taxonomy, files/media, 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

1. Go to...

2. Click on...

3. Observe [describe the expected and actual output]

Proposed resolution

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

Steps to reproduce

1. Go to...

2. Click on...

3. Observe [describe the expected and actual output]

Proposed resolution
Back to top

# data[].attributes.body.value
Supported versions

3.0.x
This is the only stable, supported version of IEF. The 3.0.0 stable release is now out with security coverage.
3.x
The future is being planned at [#3593827]. Please help out if you can! Development only, not recommended for production.
Module authors, please update requirements
See [#3407711].
Other versions

8.x-1.x
This legacy version is still marked as "supported" for Update Status in Drupal Core and on this page, but it has reached End-of-Life (EOL). It will formally be marked as "unsupported" at some unspecified future date. All sites still using the 8.x-1.x releases are encouraged to upgrade to 3.0.x ASAP. If you are on 1.x, you can safely upgrade to 3.0.x, IF no other contrib module still requires 1.x only. In this case open an issue on that project, see [#3407711].
2.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 2.x, you can 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.)
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

3.0.x

This is the only stable, supported version of IEF. The 3.0.0 stable release is now out with security coverage.

3.x

The future is being planned at [#3593827]. Please help out if you can! Development only, not recommended for production.

Module authors, please update requirements

See [#3407711].
Back to top
Other versions

8.x-1.x

This legacy version is still marked as "supported" for Update Status in Drupal Core and on this page, but it has reached End-of-Life (EOL). It will formally be marked as "unsupported" at some unspecified future date. All sites still using the 8.x-1.x releases are encouraged to upgrade to 3.0.x ASAP.

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

2.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 2.x, you can 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.)
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:

1. Go to the "Text formats and editors" admin page (admin/config/content/formats)

2. Configure your text format

3. Enable the additional attributes you want for this format in the "Advanced links" tab of the "CKEditor 5 plugin settings"

4. Save your configuration

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:

1. Go to the "Text formats and editors" admin page (admin/config/content/formats)

2. Configure your text format

3. Enable the additional attributes you want for this format in the "Advanced links" tab of the "CKEditor 5 plugin settings"

4. Save your configuration

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

1. Install this module and the jQuery UI module.

2. 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

1. Install this module and the jQuery UI module.

2. 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
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 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
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
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
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

1. Install this module and the jQuery UI module.

2. 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

1. Install this module and the jQuery UI module.

2. 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
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.5+ | 10.4+ | 8.3+ | 13.7+
5.2-5.4 | 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.5+ | 10.4+ | 8.3+ | 13.7+
5.2-5.4 | 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 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 Mail System 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
Dependencies

PHPMailer

Integrations

Mail System

# 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.
Back to top
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 Mail System 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
Back to top
Dependencies

PHPMailer

Integrations

Mail System

Back to top

# data[].attributes.body.summary
Allows email to be sent from the website to an external SMTP email server or email service.

# 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
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
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

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

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
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.summary
Provides a flexible and generic entity browsing and selecting tool (using views and other browsers). It can be used to select, reference or embed entities into the editor. Highly configurable and extensible.

# 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
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.
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

Vitalii Podoba (hitchshock) - https://www.drupal.org/u/hitchshock

# 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.
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

Vitalii Podoba (hitchshock) - https://www.drupal.org/u/hitchshock

Back to top

# data[].attributes.body.summary
Ignores specified configuration on the site so that it will not be overwritten by the config import process, allowing that configuration to be managed only through the UI.

# 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
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
This module provides the following features that are not available in Drupal 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.

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.

Note: While multiple 4.x minor branches are published and marked supported, only the latest minor release is actively maintained. Older minor versions remain available as to mitigate update status "unsupported" warnings but will not receive updates or fixes.

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

This module provides the following features that are not available in Drupal 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
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.

Note: While multiple 4.x minor branches are published and marked supported, only the latest minor release is actively maintained. Older minor versions remain available as to mitigate update status "unsupported" warnings but will not receive updates or fixes.
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
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, 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.5, all versions of Drupal 9 and Drupal 10. Release 8.x-1.6 is also compatible with Drupal 11 up to 11.2 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 will 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 (and probably final) 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='standards'>Coding Standards</h3>
The Scheduler codebase passes all the standards checks run by the Gitlab CI validation jobs. 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 <code>--standard</code> parameter
<code>phpcs path/to/modules/scheduler --standard=path/to/modules/scheduler/phpcs.xml</code>

<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='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, 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.5, all versions of Drupal 9 and Drupal 10. Release 8.x-1.6 is also compatible with Drupal 11 up to 11.2 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 will 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 (and probably final) version for Drupal 7 is 7.x-1.7 released in November 2023

You can review and test any outstanding 7.x tasks

Coding Standards

The Scheduler codebase passes all the standards checks run by the Gitlab CI validation jobs. 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

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

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 ☝️

1. Enable Menu Link Attributes module

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

3. 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 ☝️

1. Enable Menu Link Attributes module

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

3. 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
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
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

1. 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.

2. Enable modules: rest, csv_serialization

How to create a CSV view

1. Create a new view

2. Add a "Rest Export" display to the view

3. Check ONLY "csv" for Accepted request formats under Format -> Serializer -> Settings

4. Set a path for the View display under Path Settings

5. Change Format -> Show to "fields"
6. Add fields to the view

7. Verify that content exists which should be displayed in the view

8. Save the view

9. Visit the path that you set for the view

10. 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

1. 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.

2. Enable modules: rest, csv_serialization

How to create a CSV view

1. Create a new view

2. Add a "Rest Export" display to the view

3. Check ONLY "csv" for Accepted request formats under Format -> Serializer -> Settings

4. Set a path for the View display under Path Settings

5. Change Format -> Show to "fields"

6. Add fields to the view

7. Verify that content exists which should be displayed in the view

8. Save the view

9. Visit the path that you set for the view

10. 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
This module provides a way to export large amounts of data from Views in Drupal. It provides a display plugin that can rendered progressively in a batch. The module supports exporting in the following types:

CSV

Microsoft XLS (via the Excel Serialization module)

JSON

XML

Configuration and usage
See the README.md file in your version of the module for further information about how to configure the module to export data from your views.
Re-maintainership
After a period of not being maintained Views Data Export is being actively maintained, but documentation may be very out of date and there may be long standing bugs or well requested features that are not part of the module. Please bear with us while we get the module and issue queues back in shape.
Important note for batch usage
When using batch mode, it is important to sort the view on a unique identifier, such as nid or uid, to provide consistent results. See [#3120563] for background info.
History
This module has its roots in the export module that is part of the Views Bonus Pack. However, massive changes were needed to make the batch export functionality work, and so this fork was created. See: http://drupal.org/node/805960
About the Developers
This project is currently maintained by developers at ComputerMinds - visit us at http://www.computerminds.co.uk. We at ComputerMinds pride ourselves on offering quality Drupal training, Drupal development and Drupal consulting. Go Drupal!

# data[].attributes.body.processed
This module provides a way to export large amounts of data from Views in Drupal. It provides a display plugin that can rendered progressively in a batch. The module supports exporting in the following types:

CSV

Microsoft XLS (via the Excel Serialization module)

JSON

XML

Configuration and usage

See the README.md file in your version of the module for further information about how to configure the module to export data from your views.

Re-maintainership

After a period of not being maintained Views Data Export is being actively maintained, but documentation may be very out of date and there may be long standing bugs or well requested features that are not part of the module. Please bear with us while we get the module and issue queues back in shape.

Important note for batch usage

When using batch mode, it is important to sort the view on a unique identifier, such as nid or uid, to provide consistent results. See [#3120563] for background info.

History

This module has its roots in the export module that is part of the Views Bonus Pack. However, massive changes were needed to make the batch export functionality work, and so this fork was created. See: http://drupal.org/node/805960

About the Developers

This project is currently maintained by developers at ComputerMinds - visit us at http://www.computerminds.co.uk. We at ComputerMinds pride ourselves on offering quality Drupal training, Drupal development and Drupal consulting. Go Drupal!
Back to top

# data[].attributes.body.summary
Allows exporting data from Views in CSV, JSON, Excel, or XML formats.

# 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
Helper module to bring the Gin Toolbar into the Frontend of your site. Requires the Gin Admin Theme. This module is needed due to some technical limitations of Drupal (Admin) themes.

⚠️ Please add general bugs & feature request to the Gin Issue Queue.

This Module is injecting the Toolbar templates & styles from Gin into your frontend theme when you're logged into the Drupal Admin.

Sponsoring Organisations

💎 Diamond

This could be you!?

🪙 Platinum

🥇 Gold

This could be you!?

🥈 Silver

🥉 Bronze

| |
| |

Special Thanks to Vardot, Optasy, Factorial, Thunder & Adicto for previously sponsoring this project!

Full list of Sponsors

🚨 We're looking for new sponsors! 🚨

Issues currently stay open longer as we have only limited resources to look into them. Additionally new features are on hold for the time being.

This project is developed entirely in spare time. To keep the project for Drupal and Drupal CMS running and thriving, you can sponsor from $1, every donation counts! Thanks to all sponsors who support this project 🙏.
Github Sponsors Open Collective

# data[].attributes.body.processed
Helper module to bring the Gin Toolbar into the Frontend of your site. Requires the Gin Admin Theme. This module is needed due to some technical limitations of Drupal (Admin) themes.

⚠️ Please add general bugs & feature request to the Gin Issue Queue.

This Module is injecting the Toolbar templates & styles from Gin into your frontend theme when you're logged into the Drupal Admin.

Sponsoring Organisations

💎 Diamond

This could be you!?

🪙 Platinum

🥇 Gold

This could be you!?

🥈 Silver

🥉 Bronze

| |
| |

Special Thanks to Vardot, Optasy, Factorial, Thunder & Adicto for previously sponsoring this project!

Full list of Sponsors

🚨 We're looking for new sponsors! 🚨

Issues currently stay open longer as we have only limited resources to look into them. Additionally new features are on hold for the time being.

This project is developed entirely in spare time. To keep the project for Drupal and Drupal CMS running and thriving, you can sponsor from $1, every donation counts! Thanks to all sponsors who support this project 🙏.

Github Sponsors Open Collective

Back to top

# 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
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
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
Key provides the ability to improve Drupal security by managing sensitive keys (such as API and encryption keys). It gives site administrators the ability to define how and where keys are stored, which allows the option of a high level of security and allows sites to meet regulatory or compliance requirements.

Examples of the types of keys that could be managed with Key are:

An API key for connecting to an external service, such as PayPal, MailChimp, Authorize.net, UPS, an SMTP mail server, or Amazon Web Services

A key used for encrypting data using the encrypt module

Managing keys

Key provides an administration page where users with the "administer keys" permission can add, edit, and delete keys.

By using key, administrators can choose to store their keys in the following locations:

Configuration (development only): The Configuration key provider stores the key in Drupal’s database

File (Better): The File key provider allows a key to be stored in a file, preferably outside of the webroot where it cannot be publicly accessed.

Environment (Better): The Environment key provider allows a key to be stored in an environmental variable.

External (Best): Use a key management solution external to Drupal. This allows your site to meet security best practices and compliance requirements.

A full list of modules that extend Key for various storage methods can be found here .

Generating a Random Encryption Key

An easy way to generate a random encryption key in a Unix environment is to enter the following command (changing the path and file name to suit your needs):
dd if=/dev/urandom bs=32 count=1 > /path/to/secret.key
This will create a binary file with a random 256-bit key. For a 128-bit key, change the 32 to 16 in the command.

Overriding Configuration

The Drupal 8 version of Key provides the ability to override any configuration value with a key. This allows site administrators to store configuration values in a more secure method than in the database or in settings.php.

Key configuration overrides can be created at /admin/config/development/configuration/key-overrides/add.

Enter a name for the override

Select the specific configuration item you wish to override

Select an existing key that provides the value to be used; if the key doesn't exist, you'll need to create it

Check "Clear overridden value" to clear any existing value for the overridden configuration item; this is important to make sure potentially sensitive data is removed from the configuration; if for some reason, you don't want to clear the value, uncheck this field

Click "Save"

Drupal 7 Documentation

Drupal 8 Documentation

# data[].attributes.body.processed
Key provides the ability to improve Drupal security by managing sensitive keys (such as API and encryption keys). It gives site administrators the ability to define how and where keys are stored, which allows the option of a high level of security and allows sites to meet regulatory or compliance requirements.

Examples of the types of keys that could be managed with Key are:

An API key for connecting to an external service, such as PayPal, MailChimp, Authorize.net, UPS, an SMTP mail server, or Amazon Web Services

A key used for encrypting data using the encrypt module

Back to top
Managing keys

Key provides an administration page where users with the "administer keys" permission can add, edit, and delete keys.

By using key, administrators can choose to store their keys in the following locations:

Configuration (development only): The Configuration key provider stores the key in Drupal’s database

File (Better): The File key provider allows a key to be stored in a file, preferably outside of the webroot where it cannot be publicly accessed.

Environment (Better): The Environment key provider allows a key to be stored in an environmental variable.

External (Best): Use a key management solution external to Drupal. This allows your site to meet security best practices and compliance requirements.

A full list of modules that extend Key for various storage methods can be found here .
Back to top
Generating a Random Encryption Key

An easy way to generate a random encryption key in a Unix environment is to enter the following command (changing the path and file name to suit your needs):

dd if=/dev/urandom bs=32 count=1 > /path/to/secret.key

This will create a binary file with a random 256-bit key. For a 128-bit key, change the 32 to 16 in the command.
Back to top
Overriding Configuration

The Drupal 8 version of Key provides the ability to override any configuration value with a key. This allows site administrators to store configuration values in a more secure method than in the database or in settings.php.

Key configuration overrides can be created at /admin/config/development/configuration/key-overrides/add.

Enter a name for the override

Select the specific configuration item you wish to override

Select an existing key that provides the value to be used; if the key doesn't exist, you'll need to create it

Check "Clear overridden value" to clear any existing value for the overridden configuration item; this is important to make sure potentially sensitive data is removed from the configuration; if for some reason, you don't want to clear the value, uncheck this field

Click "Save"

Drupal 7 Documentation

Drupal 8 Documentation
Back to top

# data[].attributes.body.summary
Provides management, storage and access control of sensitive keys, e.g. API and encryption keys. Works with config, file, environment and external storage. Helps meet security compliance requirements.