Drupal
General
needs major refactoring!!
- Drupal dev docs - "Newcomers to Drupal development should read the conceptual information provided in the 'Components of Drupal' section, and then proceed to examine one of the heavily-documented example modules below. The examples are fully-functioning Drupal modules, so you can download them from the contributions repository and alter them as you experiment."
Command-line
Composer
- https://github.com/zaporylie/composer-drupal-optimizations - This composer-plugin contains a set of improvements that makes running heavy duty composer commands (i.e. composer update or composer require) much faster.
composer update 'drupal/*' --with-dependencies php -d memory_limit=-1 composer require zaporylie/composer-drupal-optimizations composer remove drupal/admin_toolbar_search
"drupal/core": "9.0 as 8.9" # version alias
Drush
- Drush - a command line shell and Unix scripting interface for Drupal. Drush core ships with lots of useful commands for interacting with code like modules/themes/profiles. Similarly, it runs update.php, executes sql queries and DB migrations, and misc utilities like run cron or clear cache. Drush can be extended by 3rd party commandfiles.
composer require drush/drush
composer require drush/drush:^10
- https://github.com/drush-ops/drush-launcher - In order to avoid dependency issues, it is best to require Drush on a per-project basis via Composer (composer require drush/drush). This makes Drush available to your project by placing it at vendor/bin/drush.However, it is inconvenient to type vendor/bin/drush in order to execute Drush commands. By installing the drush launcher globally on your local machine, you can simply type drush on the command line, and the launcher will find and execute the project specific version of drush located in your project's vendor directory.
Commands
I have dr
as an alias for drush
.
drush updatedb --no-interaction --yes drush watchdog:show drush help alll the commands! drush help --filter choose which help category to echo
drush cc all clear cache
drush pml list installed and enabled modules drush dl [project] download project drush dl sasson-7.x-3.x-dev download sasson dev release drush updb run upgrade.php
drush en [project] -y enable project without confirmation drush dis [project] -y disable project drush pm-uninstall [project] remove project from db
drush sql-cli < example.sql
drush php-eval 'echo drush_get_context("DRUSH_DRUPAL_ROOT");' drush php-eval 'echo drush_locate_root() . "/" . drupal_get_path('theme', 'sasson');' drush eval 'echo theme_get_setting('sasson_compiler') . "\n" ;' otherwise gives trailing issue?
drush vset --yes site_offline_message "This site is being maintained"; drush vset --yes site_offline 1;
In Drupal 7 to simply put the site into maintenance mode:
drush vset --yes maintenance_mode 1;
drush user-login ryan displays a one-time login link for the user ryan. open `drush user-login ryan` open said link in browser dr uli
Site aliases
Drush uses site alias files to store context data. (Aegir still uses Drush 4)
drush help site-alias
Copy to ~/.drush, rename aliases.drushrc.php or further.
drush ev 'print_r(array_keys(drush_sitealias_get_record("@server_master")))' drush ev '$a = drush_sitealias_get_record("@gk.dev"); print_r($a["path-aliases"]);'
- http://api.drush.ws/api/drush/commands!sql!sync.sql.inc/function/drush_sql_sync/4.x
- http://api.drush.ws/api/drush/includes%21sitealias.inc/function/drush_sitealias_get_record/4.x
Deployment
To sort with Aegir#Remote
- drupal.org: Using drush to synchronize and deploy sites
drush help rsync drush help sql-sync
- http://www.prometsource.com/blog/using-sql-sync-rsync-drush
- vimeo: Synchronising drupal sites from local to remote using drush site aliases
- youtube: Drush Tip: Use sql-sync to Quickly Move a Database
- http://drupalcode.org/project/drush.git/blob/HEAD:/examples/sync_enable.drush.inc
- http://drupalcode.org/project/drush.git/blob/HEAD:/examples/sync_via_http.drush.inc
Drupal Console
Debugging
Troubleshooting
$config['system.logging']['error_level'] = 'verbose'; # in sites/default/settings/php
Modules
- http://drupal.org/project/devel - A suite of modules containing helpful tools for module developers and themers.
- https://drupal.org/project/devel_debug_log - a developer module that provides a way for developers to save and display debug messages on a separate page in the web browser. It serves as an alternative to using drupal_set_message() or watchdog() for debugging, and a complementary module to Devel for those who find viewing messages in the browser easier than looking for them, say, in a file.
- https://www.drupal.org/project/devel_php - The Execute feature has been removed from the Devel module for Drupal 8 since version 2.0. This module re-adds back that feature as an external module. Hence the message "This project is not covered by Drupal’s security advisory policy".
- http://drupal.org/project/inspect - Log instructive and well formatted variable dumps and deep stack traces.
Admin
- https://www.drupal.org/project/admin_toolbar - 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).
- https://www.drupal.org/project/module_filter - quickly find the module you are looking for without having to rely on the browsers search feature which more times than not shows you the module name in the 'Required by' or 'Depends on' sections of the various modules or even some other location on the page like a menu item.
- https://www.drupal.org/project/coffee - The Coffee module helps you to navigate through the Drupal admin faster, inspired by Mac apps Alfred and Spotlight. alt+d
- https://www.drupal.org/project/total_control - Several overview panes are included for site stats and quick reference. Several administration panes are provided with quick links to content types, menus, taxonomy, and other scattered locations of important Drupal site administration. Several views panes are also provided as well as full-page comprehensive versions of the views with bulk operations. Each views panel pane is customizable via it's pane settings, or override the default views provided to suit your own needs.
- https://drupal.org/project/views_system - create customized views of modules, themes, and theme engines that are or have been installed in Drupal's file system
- http://drupal.org/project/update_notifications_disable - overrides update status even if not enabled. needs a cache clear to start working.
- https://www.drupal.org/project/disable_messages - Gives a site owner options to disable specific messages shown to end users.
- https://www.drupal.org/project/ultimate_cron - Runs cron jobs individually in parallel using configurable rules, pool management and load balancing.
Configuration
- https://www.drupal.org/project/config_enforce - ensures that select configuration cannot be changed in production environments.
- http://drupal.org/project/features - The features module enables the capture and management of features in Drupal. A feature is a collection of Drupal entities which taken together satisfy a certain use-case. Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module. A feature module is like any other Drupal module except that it contains additional information in its info file so that configuration can be checked, updated, or reverted programmatically.
- https://www.drupal.org/project/config_tools - Stores your current active configuration as yml in a specified directory, Auto commits changes to your configuration to a specified git repository for every configuration change.
- https://www.drupal.org/project/config_backup - allows easy make backups of the site configurations via Drupal UI or via `drush`.
- https://www.drupal.org/project/config_update - contains a base module and a reporting module.Use the base module if another project has it as a dependency (example: Features).The report module supplements the core Configuration Manager module, by providing a report that allows you to see the differences between the configuration items provided by the current versions of your installed modules, themes, and install profile, and the configuration on your site. The report is available from the administration UI, or via Drush commands.
- https://www.drupal.org/project/config_split - 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.
- https://www.drupal.org/project/config_devel - module helps with developing configuration
Users etc.
- https://www.drupal.org/project/masquerade - allows site administrators (or anyone with enough permissions) to switch users and surf the site as that user (no password required). That person can switch back to their own user account at any time.
- https://www.drupal.org/project/role_delegation - This module allows site administrators to grant specific roles the authority to assign selected roles to users, without them needing the administer permissions permission.
- https://www.drupal.org/project/url_alias_permissions - allows site administrators to set permissions to create and edit url path settings by content type.
Workflow
Editing of submitted unpublished nodes, updating coordinator contact info, etc.
Rules
- http://drupal.org/project/rules - The Rules module allows site administrators to define conditionally executed actions based on occurring events (known as reactive or ECA rules).
- https://www.drupal.org/project/rules_token - enables to use in Rules tokens provided by the following modules: 'Token', 'Custom Tokens', 'Custom Tokens Plus'
- https://www.drupal.org/project/rules_data_exchanger - enables to exchange data between Rules and rules Components.
Other
- http://drupal.org/project/workbench - provides easier content management for content administrators
- http://drupal.org/project/workbench_access - creates editorial access controls based on hierarchies
- http://drupal.org/project/workbench_moderation - adds arbitrary moderation states to Drupal core's "unpublished" and "published" node states, and affects the behavior of node revisions when nodes are published
- https://www.drupal.org/project/maestro - This is not a just a clever saying. It's true. With Maestro, the method to automate your process starts with our visual workflow editor with which you drag, drop and connect your workflow steps together. The maestro workflow editor can be used by business users to map out their business process.
- https://www.drupal.org/project/override_node_options - The Override Node Options module allows permissions to be set to each field within the Authoring information and Publishing options field sets on the node form. It also allows selected field sets to be set as collapsed and / or collapsible.
- https://www.drupal.org/project/business_rules - The Business Rules module is inspired on Rules module and allow site administrators to define conditionally actions execution based on events. It's based on variables and completely build for Drupal 8.
- https://www.drupal.org/project/if_then_else - "If Then Else" module provides a graphical user interface to set different rules which can work as a replacement of programmatic hook based approach to add custom actions on different hooks and events.
- https://www.drupal.org/project/save_edit - Save & Edit is a module that provides a very simple, yet welcome function to node editing pages.
- https://www.drupal.org/project/addanother - Add another message displayed after the user creates a nodeAdd another tab on nodes to create further nodes of the same type
- https://www.drupal.org/project/custom_add_another - This is a very simple module that allows you to customise the text of the 'Add another item' button on multi-valued fields.If your field supports 'unlimited' values then you are offered the option of customising the 'Add another item' button text. This setting is stored per 'bundle', so you can have different button text if you use the same field in two places.
Queue
- https://www.drupal.org/project/queue_ui - A user interface to viewing and managing Drupal queues created via the Queue API which began in Drupal 7.
Multisite
Checking
- https://www.drupal.org/project/site_audit - a Drupal static site analysis platform that generates reports with actionable best practice recommendations.
- https://www.drupal.org/project/cache_consistent - provides a transactional aware cache backend wrapper as a means of ensuring cache consistency in setups not using the database as a cache backend. Needs core patch.
Setup
Blocks
- http://drupal.org/project/menu_block - broken?
- http://drupal.org/project/distributed_blocks - Simple client/server module to share rendered blocks across different Drupal sites. Must be enabled on both sides.
Context
- http://drupal.org/project/context - Context allows you to manage contextual conditions and reactions for different portions of your site. You can think of each context as representing a "section" of your site. For each context, you can choose the conditions that trigger this context to be active and choose different aspects of Drupal that should react to this active context.
Display Suite
- http://drupal.org/project/ds - Display Suite allows you to take full control over how your content is displayed using a drag and drop interface. Arrange your nodes, views, comments, user data etc. the way you want without having to work your way through dozens of template files. A predefined list of layouts is available for even more drag and drop fun!
Layout
- https://www.drupal.org/project/layout_options - This module provides a Layout plugin that allows configuration options to easily be added layouts using using Yaml files and LayoutOption plugins. In most cases, using no code just YAML files.
- https://www.drupal.org/project/layout_builder_save_and_edit - adds Save and Edit Layout button in layout builder form page which will save Site Builders/Content Editors time by redirecting it to same page in which they can see there recently added changes and can add extra changes for there layout.
- https://www.drupal.org/project/layout_builder_kit - a set of pre-made components you can use in your Layout Builder pages. They are ready for Drupal 9.
- https://www.drupal.org/project/layout_builder_base - The layout_builder_base module provides you a plugin base to create complex Layouts. It can be used by developers as a base to save time and focus on your styling. This module also provides a submodule wich provides you different layouts that can be used to build pages.
- https://www.drupal.org/project/layoutcomponents - This module has been based on "Layout Builder" and provides a complete package of components integrated with that system, functionality that is available on Drupal 8 and is already fully supported by Drupal 9.With this module we want to extend the user experience by creating an improved interface, much more customizable and with aspects that are essential for us, such as the live preview of the changes while editing the content.
- http://drupal.org/project/panels_everywhere - Panels Everywhere is an advanced method to completely do away with Drupal's restrictive blocks system and instead use the much more freeing Panels Layout system to control how your pages look. Panels Everywhere modifies the page as it is being rendered to 'wrap' the content in a display and can even take over your page theme to do away with the need for a page.tpl.php.
- https://www.drupal.org/project/page_manager - This is the Drupal 8 version of Page Manager, formerly part of the CTools module written by merlinofchaosIt supports the creation of new pages, and allows placing blocks within that page.Like Drupal 7's Page Manager, it provides a concept of "page variants", each with their own selection conditions.Additionally, it can be used to take over an existing page, like overriding /node/% to change what is displayed when viewing a node.It utilizes the core Conditions, Context, and Blocks APIs to accomplish this.
- https://www.drupal.org/project/bootstrap_layouts - the combination of the Drupal 7 Display Suite Bootstrap Layoutsand Panels Bootstrap Layouts modules for Drupal 8.
- https://www.drupal.org/project/drusys_landing_page_builder - A highly customizable Landing Page Builder built with Paragraphs, alternative to layout builder & supports any theme.
Path
- http://www.drupal.org/project/pathauto - 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.
- http://drupal.org/project/subpathauto - The Drupal Path module matches only full URLs when creating SEO-friendly aliases. This module extends that behavior by also matching known sub-paths and replacing them with their respective alias.
- http://www.drupal.org/project/pathologic - an input filter which can correct paths in links and images in your Drupal content in situations which would otherwise cause them to “break;” for example, if the URL of the site changes, or the content was moved to a different server. Pathologic can also solve the problem of missing images and broken links in your site’s RSS feeds.
- https://www.drupal.org/project/redirect - Provides the ability to create manual redirects and maintain a canonical URL for all content, redirecting all other requests to that path.
- http://www.drupal.org/project/empty_page - The Empty Page module is a simple empty page solution. It provides an interface that assists in managing "empty" menu callbacks, mostly used for pages that only consist of blocks.
- http://www.drupal.org/project/xmlsitemap - The XML sitemap module creates a sitemap that conforms to the sitemaps.org specification. This helps search engines to more intelligently crawl a website and keep their results up to date. The sitemap created by the module can be automatically submitted to Ask, Google, Bing (formerly Windows Live Search), and Yahoo! search engines. The module also comes with several submodules that can add sitemap links for content, menu items, taxonomy terms, and user profiles.
Title
- https://www.drupal.org/project/ot - provides an interface to override/change the title using the Node(node_id), Path/URL and View pages, providing a fast and full access to Administrator.
Menus
- http://drupal.org/project/menu_attributes - specify attributes for menu items such as id, name, class, style, and rel
- http://drupal.org/project/menu_css_names - auto class menu li tags
- http://drupal.org/project/superfish - jquery superfish menus
- http://drupal.org/project/nice_menus - uses superfish also, less settings
- http://drupal.org/project/menu_force - removes the 'Add menu item' checkbox and makes the title field mandatory
- https://www.drupal.org/project/menu_position - Often times site builders want certain types of content to appear in a specific position in the navigational menu. The simplest solution, adding all of that content individually to the menu system, has performance and usability issues. (Imagine hundreds of menu items added to one spot in the menu.)This module allows for the creation of rules that will dynamically add the current page into the menu system at the requested spots.
- https://www.drupal.org/project/ultimenu - the UltimatelyDeadSimple megamenu ever with dynamic region creation.An Ultimenu block is based on a menu.Ultimenu regions are based on the menu items.The result is a block contains regions containing blocks, as opposed to: a region contains blocks.
Breadcrumbs
GUI
- http://drupal.org/project/fancy_login - Fancy Login adds JavaScript based, lightbox-style login functionality to your site. When the user clicks on any link that links to /user/login, they screen dims and a login box is created in the center of the screen.
- http://drupal.org/project/jeditable - The jEditable module provides integration between Drupal's CCK module and the excellent jQuery plugin, jEditable. It is implemented as a CCK formatter, which makes inline editing possible through regular node displays, Panels, Views, or anywhere else you can place a CCK field.
Typography
- https://www.drupal.org/project/fontyourface - provides an administrative interface for browsing and applying web fonts (using CSS @font-face, supported in all popular browsers) from a variety of sources. Try it out on simplytest.me.
- https://www.drupal.org/project/google_webfonts_helper - Google Webfonts Helper module - integration with the service of the same name, which allows you to download Google fonts for local use.
- https://www.drupal.org/project/google_webfont_loader_api - This module uses the Webfont Loader Library, developed by Google and Typekit
JavaScript
- https://www.drupal.org/project/javascript_libraries - This module is designed to facilitate re-use of some of the JS libraries (e.g. jquery UI) that ship with Drupal core, as well as to make it easier to for users to add custom JavaScript to a site.
- http://drupal.org/project/tipsy - Tipsy is a jQuery plugin for creating a Facebook-like tooltips effect to textareas, textfield, anchors or any other HTML element you specify.
- https://www.drupal.org/project/languageicons - This module provides icons for language links, both for the Language switcher block and (optionally) for node links.
Timeline
Mapping
Spreadsheets
Books
- https://drupal.org/project/outline_designer - easy book editing
- http://drupal.org/project/issues/bookblock - all books in one block
Shortcodes
- http://drupal.org/project/shortcode - api with examples/macros
Search
Notification
Simplenews
- Simplenews publishes and sends newsletters to lists of subscribers. Both anonymous and authenticated users can opt-in to different mailing lists. HTML email can be sent by adding Mime mail module.
Creating
- https://www.drupal.org/project/custom_nid - allows site builders to create node with their custom nid. If the node with given nid is already exist a message will occur that "Nid already exists".
Modes
- Display Modes: View Modes and Form Modes | Drupal guide on Drupal.org - admin/structure/display-modes
- https://www.drupal.org/project/entity_form_mode - This module lets you make use of form modes for default entities as nodes, taxonomy terms or comments. It hooks up form modes corresponding to entity form routes. The route to add or edit an entity is called "entity.taxonomy_term.add" or "entity.node.edit_form". All you have to do to display i.e. the edit form in its own form mode is to offer a form mode with the (machine) name "edit_form" (the last part of the route name). This is automatically selected by this module to display the form.
- https://www.drupal.org/project/form_mode_manager - Provides an interface that allows the implementation and use of Form modes easily without specific development. This module provides different configurations/routes/UI/Additional access control to simplify and enhance the management and development of your different entity forms that allowing you to implement a complex content strategy in simple ways. Form mode manager provides a mechanism fully integrated with the event and routing system to support your custom content entities and flexibility to add some behaviors of entity forms.
- https://www.drupal.org/project/form_mode_control - This module allows you: to define access to each form mode for the different roles, to define for each role, each bundle of each entity which form mode should be selected by default during the creation and edit of a content. Of course you should grant access before defining this. If a user has multiple roles, the weight of the roles is taken into account (heaviest one), to access any of the form modes—as long as you have the permission—by adding a simple parameter such as the following example: node/add/article?display=form_mode_machine_name.
WYSIWYG
See also WYSIWYG
Inplace / Inline
- https://www.drupal.org/project/jeditable - The jEditable module provides integration between Drupal's CCK module and the excellent jQuery plugin, jEditable. It is implemented as a CCK formatter, which makes inline editing possible through regular node displays, Panels, Views, or anywhere else you can place a CCK field.
- http://drupal.org/project/inline_entity_form - Provides a widget for inline management (creation, modification, removal) of referenced entities.
Embedding
- https://www.drupal.org/project/pdf - Use HTML5 to display PDF files if users don't have pdf plugin for their browsers.
Rules
- https://www.drupal.org/project/fillpdf - Most PDF modules generate PDFs from scratch; FillPDF is not one of those modules. Instead, it lets you fill in existing editable PDFs with data from your Drupal site. Editable PDFs are those forms that let you type into them.
Entities
An entity can be a kind of content stack. An entity base table is tied to fields using bundles. Entity types include node, comment, taxonomy term, user profile, organic group, etc. Entity types can allow bundling or not (creating types of node vs. users, though see the Profile 2 module). Fields are used to store and display various data types, and can be reused across bundles and entities.
- http://www.slideshare.net/ronald_istos/drupal-entities-emerging-patterns-of-usage
- http://www.slideshare.net/erikwebb/drupal-7-and-entities-7036807
- http://drupal.org/project/entity - used for improvements to Drupal 8's Entity API which will be moved to Drupal core one day (development ongoing)
- https://www.drupal.org/project/eck - The Entity Construction Kit (ECK) builds upon the entity system to create a flexible and extensible data modeling system both with a UI for site builders, and with useful abstractions (classes, plugins, etc) to help developers use entities with ease.ECK allows the creation and management of entity types with custom properties; adding bundles to entity types; and fields to bundles, with the help of the Field UI module.
- http://drupal.org/project/eva - Entity Views Attachment
- http://drupal.org/project/auto_entitylabel - "Automatic Entity Label" is a small and efficient module that allows hiding of entity label fields. To prevent empty labels it can be configured to generate the label automatically by a given pattern.
- https://www.drupal.org/project/entityqueue - The Entityqueue module allows users to create queues of any entity type. Each queue is implemented as an Entity Reference field, that can hold a single entity type.
- https://www.drupal.org/project/group_entityqueue - This module is designed to associate entity queue entities with a group when using the Group module.
- https://www.drupal.org/project/entity_browser - 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.
- https://www.drupal.org/project/entity_browser_enhanced - provides some behavior and style enhancements to Entity Browsers, specifically for multiselect and image/media browsers.Influenced by the enahncements made on the Media Entity Browser in Lightning.
- https://www.drupal.org/project/entity_reference_revisions - Adds a Entity Reference field type with revision support.It's based on the core Entity Reference module but allows you to reference a specific entity revision. This is useful for modules like Paragraphs and Inline Entity Form.
- https://www.drupal.org/project/entity_reference_layout - Entity Reference with Layout empowers content creators to design beautiful pages with structured content (aka Paragraphs). It borrows concepts from other paragraphs-inspired modules like Bricks, and provides authors with a way to visually manipulate referenced entities and create unique page layouts. Entity Reference with Layout leverages Drupal’s core Layout Discovery module.
- https://www.drupal.org/project/external_entities - This module allow you to connect to datasets from external databases and use it in your Drupal 8 website. While content lives external, Drupal sees those remote entities as internal. This makes it possible to alter the field displays, add references, comments, pathaliases, share buttons, webshop products and more.
- https://www.drupal.org/project/entity_browser - provide a generic entity browser/picker/selector
- https://www.drupal.org/project/entity_embed - allows any entity to be embedded within a text area using a WYSIWYG editor.
Content
- https://www.drupal.org/project/multiversion - convert all core content entities on your site to be revisionable. This includes but is not limited to, nodes, taxonomy terms, comments, block content.It also enhances the Entity API by providing a global identifier for all revisions, handling revision trees (by tracking revision parents) and changing the delete operation to write a new "deleted" revision so that it can be restored if needed.
- https://www.drupal.org/project/node_keep - Adds two base fields to all nodes.Node keeper: prevents people who don't have the 'bypass node access' permissionfrom deleting nodes where that checkbox is enabled.Alias keeper: prevents people who don't have the 'administer node_keep per node' permissionfrom changing the node's alias if the Alias keeper checkbox is checked. Is onlyinstalled if the 'pathauto' module exists.
- http://drupal.org/project/delete_all - This module is used to delete all content and/or users from a site. This is mainly a developer tool, which can come in handy in several cases, listed below.
- https://www.drupal.org/project/drush_delete - provides the drush command to delete all the dummy contents through drush Command
- https://www.drupal.org/project/advanced_text_formatter - This module is just a formatter (display) of textfield, text area and text format. The idea behind this is to provide a simple solution, easy to setup, with few dependencies to display text on website.
- https://www.drupal.org/project/improve_line_breaks_filter - provides a text filter that replaces empty paragraphs
- https://www.drupal.org/project/wysiwyg_linebreaks - Wysiwyg Linebreaks allows users of wysiwyg editors to save and open markup from their website with linebreaks
- https://www.drupal.org/project/intelligent_tools - This module provides following functionalities.1. Auto Tagging2. Text Summarization3. Duplicate Content Identification.
Files
- http://drupal.org/project/filefield_paths - The File (Field) Paths module extends the default functionality of Drupal's core File module, Image module and many other File upload modules, by adding the ability to use entity based tokens in destination paths and file names.
- https://www.drupal.org/project/system_stream_wrapper - Provides stream wrappers to access module, theme, profile, and library files and directories. Note these stream wrappers are read-only as none of these files or directories should be write-able by your webserver.
Comments
- http://drupal.org/project/ajax_comments - Provides ajax comments to Drupal sites (commenting like a social networking sites: Facebook, Google+, vk.com etc).
- https://www.drupal.org/project/bestreply - Best reply module allows node authors to mark a particular comment as the best reply. It aims to encourage quality comments and to give some recognition to people posting quality responses.
Feedback
- https://www.drupal.org/project/admin_feedback - Module for gathering user feedback on content (nodes). Allows users to submit feedback to content via ajax requests (so the client is never redirected). Dashboard is provided for the administrators to easily monito, analize and inspect the content feedback.
Media
- https://www.drupal.org/project/image_formatter_link_to_image_style - This module provides an additional formatter for image core field, to link to an image style.
- https://www.drupal.org/project/image_with_title - allows a userto display the Image title attribute along with the Image.
- http://drupal.org/project/image_resize_filter - This filter makes it easy to resize images, especially when combined with a WYSIWYG editor such as tinyMCE, CKeditor etc. Users never have to worry about scaling image sizes again, just insert an image and set it's height and width properties in HTML (this is done automatically by WYSIWYG editors) and the image is resized on output to match the HTML.
- http://drupal.org/project/media_gallery - A simple gallery of media.
- http://drupal.org/project/insert - Insert is a utility that makes inserting images and links to files into the body field and other WYSIWYG editors or text areas much easier by adding a simple JavaScript-based button and optional controls to file and image fields. Images may be inserted using any image style preset. Insert may also be interfaced to by other modules for inserting custom content.
- https://www.drupal.org/project/media_responsive_thumbnail - This module adds a new field formatter for Entity Reference fields which target Media entities. Essentially, it allows you to display a Media Entity Reference field just like you normally would an Image field with a Responsive Image formatter.
- https://www.drupal.org/project/blazy - Provides integration with bLazy and or Intersection Observer API, or Native lazy loading to lazy load and multi-serve images to save bandwidth and server requests. The user will have faster load times and save data usage if they don't browse the whole page.
- https://www.drupal.org/project/media_library_edit - add a missing "Edit" button to the Media Library widget that routes to the Media entity edit form.
- https://www.drupal.org/project/remote_stream_wrapper - Provides the ability to use external files with file fields without saving the files to your local files directory. Also provides a 'Remote URL' browser plugin for Media.By default the module adds support for any URL using http://, https://, or feed://. Also note these stream wrappers are read-only and cannot perform any writing operations.
- https://www.drupal.org/project/media_entity_remote_image - This module provides a basic Remote Image media entity type which allows embedding of images from any remote URL. The entities are simply rendered as an <img> tag with the src attribute set the to the URL that is saved on the entity. The limitation to this approach is that you cannot leverage Drupal Core's image styles since the images are not copied to the site's local file system.
- http://drupal.org/project/mediawiki_api - This module provides an input filter which allows the conversion of content marked up using MediaWiki syntax to html for display on your drupal site, by using the "parse" feature of the MediaWiki API.
- https://www.drupal.org/project/auto_image_style - Allows to apply an image style depending on whether the orientation of original image is portrait or landscape.
- https://www.drupal.org/project/representative_image - Allows you to define representative image or media fields for entities like nodes, taxonomy terms and the like. These can then be used in Open Graph meta tags (via tokens); as fields in views; or embedded as tokens. The media module is also supported. A default image can be defined for those entities without images.
- https://www.drupal.org/project/background_image_formatter - provides an image formatter that allows you to display the image in a div as background image.
- https://www.drupal.org/project/background_image - If your site is designed around utilizing background images, then this module is for you! Whether you need a surgical implementation that only administrators/developers can implement or provide the ability to allow users to attach their own background images to entities, this module has you covered.
- https://www.drupal.org/project/image_style_generate - Image Style Generate allows a site administrator to quickly create image styles in bulk, based on a defined set of rules and patterns. It provides examples of how migrations can employ the module's capabilities.
- https://www.drupal.org/project/flexslider - Flex Slider module integrates the Flex Slider library with Drupal and several contributed modules which allows you to build responsive, resizable slideshows. Meaning the slideshows automatically adapt to the size of the browser window or device.
- https://www.drupal.org/project/image_effects - The Image Effects module provides a suite of additional image effects that can be added to image styles. Image Effects tries to support both the GD toolkit from Drupal core and the ImageMagick toolkit.
- https://www.drupal.org/project/image_gen - This module generates an image on the fly from parameters.
- https://www.drupal.org/project/textimage - adds text to image functionality using GD2 and FreeType, enabling users to create crisp images on the fly for use as theme objects, headings or limitless other possibilities.
- https://www.drupal.org/project/media_duplicates - This module allows the comparison, detection and restriction of duplicate mediaentities within a site.Cleaning up the duplicate media items is currently outside the scope of this module. That's because it's a hard task. Depending on media usage in fields, usage across translations, usage in token embedded media, usage in config (blocks, etc).
Audio
- http://drupal.org/project/audiofield - allows you to upload audio files and automatically displays them in a selected audio player. Currently it supports 6 players and it provides API for easy addition of new players.
Forms
Webform
Dates, times and events
- http://drupal.org/project/calendar - will display any Views date field in calendar formats, including CCK date fields, node created or updated dates, etc. Switch between year, month, and day views. Back and next navigation is provided for all views. Lots of the Calendar functionality comes from the Date module, so any time you update the Calendar module you should be sure you also update to the latest version of the Date module at the same time.
- http://drupal.org/project/scheduler - allows nodes to be published and unpublished on specified dates.
- https://www.drupal.org/project/published_corrected_date - adds 3 properties to all nodes that cannot be modified in the UI, but are available for display via Views and Layout Builder.
- https://www.drupal.org/project/publication_date - The Publication Date module adds a "Published on" date for each node, containing the date when it was first published.
- https://www.drupal.org/project/date_popup - Adds the native HTML 5 date popup widget to all date fields in views filters.
- https://www.drupal.org/project/smart_date_calendar_kit - Installs a preconfigured view to use Smart Date values in a Fullcalendar View. Extends on and requires Smart Date Starter Kit so review that module and its notes about the default configuration provided.This module is not intended to be a robust solution, but a starting point. It could be useful for evaluating the basic functionality of Smart Date and Fullcalendar View, or it could be the starting point for a more customized solution.
- https://www.drupal.org/project/reset_date_field - provides the "Reset" button just next/below Date Field. On click on reset button date, date time, created date get rest with default empty.
- https://www.drupal.org/project/date_range_formatter - provides field formatter for date fields. The formatter shows date ranges using the preconfigured format.
- https://www.drupal.org/project/date_ap_style - Output Date fields as AP Style. This module aims to meet most of these requirements.
- https://www.drupal.org/project/views_daterange_filters - Adds filter options for date range fields.
- https://www.drupal.org/project/views_future_past_date_sort - This module provides a views field sort plugin to allow sorting future dates in chronological order before showing past events in reverse chronological order.
- https://www.drupal.org/project/jquery_countdown_timer - a lightweight module that provides a block with a jQuery countdown timer. This module uses only jQuery and css and does not use any images.
- https://www.drupal.org/project/field_timer - provides field formatters for core module Datetime which display timer or countdown. 3 field formatters are provided: simple text and 2 formatters based on jQuery plugins County and jQuery Countdown.If you are looking for a configurable countdown/timer, this module is for you. It allows to configure backgrounds, effects, formats, language of timer, etc.
Ctools
Chaos tool suite (ctools) 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 Plugin Stub is a Drush plugin that can help you generate code stub files for ctools plugins. I wrote this plugin after having consistently messed up names of hook implementations in plugins over a long period. Plugin Stub does not write actual code that *does* stuff for you, but it sets you up so that all you have to do to get started is to fill in the capitalized parts of the generated file and start writing code that *does* stuff.
Views
mess!!!
Administration
- http://drupal.org/project/views_bulk_operations - perform bulk operations on content via views
- https://www.drupal.org/project/views_bulk_edit - Allows bulk updating of entity values via views bulk actions. By default it is configured for nodes but can be configured for other entity types.
Structure
- http://drupal.org/project/semanticviews - This Views plugin makes unformatted styles, field row styles and other output more readily configurable without needing to override template files. Instead of overriding row style templates for views where you want to specify different HTML elements (tags) and class attributes, you can specify these inside the Views UI and avoid overriding templates for each view.
- https://www.drupal.org/project/views_fieldsets - Creates fieldset (and details and div) in Views fields output, to group fields, by adding a new field: "Global: Fieldset" and a few preprocessors. Also introduces a new template: views-fieldsets-fieldset.tpl.php where you can customize your fieldset output.
- https://www.drupal.org/project/views_ef_fieldset - This module provides options to render exposed filters and exposed sorts fields in fieldsets.This module uses the Display Extender plugin for Views and works for any kind of exposed form.It also works if you use your exposed form in a block.
Format
- https://www.drupal.org/project/filter_harmonizer - allows you to have a contextual filter argument apply only when there is no corresponding regular (exposed) filter value present.
- http://drupal.org/project/views_slideshow - Views Slideshow can be used to create a slideshow of any content (not just images) that can appear in a View. Powered by jQuery, it is heavily customizable: you may choose slideshow settings for each View you create.
- https://www.drupal.org/project/viewfield - provides a field that holds a reference to a View and renders it whenever the entity containing the field is displayed.
- http://drupal.org/project/views_field_view - i heard you liked views
- http://drupal.org/project/draggableviews - makes rows of a view "draggable" which means that they can be rearranged by Drag'n'Drop.
- https://www.drupal.org/project/views_photo_grid - This module adds a responsive photo grid display style to Views. The photo grid style arranges photos such that the height in each row is consistent, and the photos always fill up all the available width.
- https://www.drupal.org/project/views_filter_clear - The Views Filter Clear module allows 'Clear' links to be configured for individual exposed views filters. These links clear any submitted value from the view. They operate independently of one another. This is different from the Reset buttons available for exposed forms, which reset the entire form to its default
- https://www.drupal.org/project/token_views_filter - The Tokens in Views Filter Criteria module allow to use tokens in views string, numeric and date filter criteria values.
- https://www.drupal.org/project/views_conditional - Views Conditional is a simple module that allows you to define conditionals (if xxx then yyy)with fields in views.
- https://www.drupal.org/project/view_mode_page - Create separate pages for different view modes for a given content type.
- https://www.drupal.org/project/views_condition - This provides a condition based on if the page is a view page. For example, you can use it to specify that the page title block should only show on all view pages, or a specific block displays on a selection of different view pages.
- https://www.drupal.org/project/slick_views - Provides Views style plugin for Ken Wheeler's Slick carousel.
- https://www.drupal.org/project/slick_extras - Provides Slick carousel samples and extra utilities demonstrating various usages of Slick carousel. The provided samples are forward-compatible with next Slick versions.
- https://www.drupal.org/project/layout_plugin_views - Panels used to have a views row plugin in Drupal 7 which allowed users to place view's fields on panels' layouts. Since panel's layout functionality has been split off into Layout Plugin for Drupal 8, the views plugin no longer has any dependency on the Panels module. We therefore chose to also create a separate project for the views plugin to reduce the maintenance burden on the panels team.
- https://www.drupal.org/project/mixitup_views - implements ability to use MixItUp filtering and sorting in Views.From https://mixitup.kunkalabs.com/: MixItUp is a jQuery plugin providing animated filtering and sorting. Great for managing any categorised or ordered content like portfolios, galleries and blogs, MixItUp can also function as a powerful tool for engaging application UI and data-visualisation.
Filters
https://www.drupal.org/project/views_future_past_date_sort
Feed
- Drupal tricks: Removing the RSS icon in Drupal (and getting to know Views a little bit) | Don't Panic - disable the Feed for the view
Tokens
- https://www.drupal.org/project/token - Provides additional tokens not supported by core (most notably fields), as well as a UI for browsing tokens.
- https://www.drupal.org/project/token_filter - Token Filter is a very simple module to make token values available as an input filter.
- https://www.drupal.org/project/aet - Creates a Token for each of your entity items.Through AET you can query the DB for entities using Tokens.
Fields
- https://www.drupal.org/project/manage_display - This project makes base fields such as 'title' available in "Manage Display".
- http://drupal.org/project/conditional_fields - Define dependencies between fields based on their states and values.
- http://drupal.org/project/double_field - Double Field is a small module written to provide extensions to Drupal's core Fields. By this module you can split your fields up into two separate parts.
- http://drupal.org/project/custom_add_another - This is a very simple module that allows you to customise the text of the 'Add another item' button on multi-valued fields.
- http://drupal.org/project/multiple_selects - This modules provides a widget called Multiple Selects list
- https://www.drupal.org/project/inotherwords - This module provides a field formatter for condensing sequential lists into shorter text.
- https://www.drupal.org/project/field_permissions - allows site administrators to set field-level permissions to edit, view and create fields on any entity.
- https://www.drupal.org/project/pbf - provide a new Field Type which enhance the Entity Reference field type.
- http://drupal.org/project/field_validation - This module provides a collection of configurable validation rules for your field instances.
- https://www.drupal.org/project/rfv - provides an extra validation option for text fields.It uses the power of regular expressions to validate the content from fields
- https://www.drupal.org/project/clientside_validation - This module adds clientside validation (aka "Ajax form validation") for all forms and webforms using jquery.validate. The included jquery.validate.js file is patched because we needed to be able to hide empty messages.
- http://drupal.org/project/field_group - 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.
- http://drupal.org/project/formatter_field - The formatter field module provides a mechanism for specifying a formatter and formatter settings to be used for displaying a field, on a per-entity basis. By default, Drupal provides formatters and settings per entity bundle, but in certain situations it is necessary to choose the formatter at the entity level.
- https://www.drupal.org/project/field_formatter_filter - extends text field formatter settings (as seen on "manage display") to allow you to choose a different "text format" or text filter at the same time as the normal choices of "full" or "summary".
- https://www.drupal.org/project/linked_field - allows you to link fields in the field formatter settings. E.g. you have a content type teaser with an image and a link field and you want to link the image to the entered link.
- http://drupal.org/project/field_slideshow - Provides a Slideshow formatter for Image fields, using JQuery Cycle plugin. Compared to Views slideshows, building the slideshow from multiple nodes, this module builds it from a single node, with a multi-valued Image/Media/Field Collection field.
- http://drupal.org/project/fences - Fences is a an easy-to-use tool to specify an HTML element for each field. This element choice will propagate everywhere the field is used, such as teasers, RSS feeds and Views. You don't have to keep re-configuring the same HTML element over and over again every time you display the field.
- https://www.drupal.org/project/bricks - a new way of building pages on top of Entity Reference, Display Modes, Layout API, tabledrag.js and Flat Tables. Everything is in Drupal core that makes Bricks ultra-lightweight and developer-friendly.
- https://www.drupal.org/project/computed_field - very powerful field module that lets you add a custom "computed fields" to your content types. These computed fields are populated with values that you define via PHP code. You may draw on anything available to Drupal, including other fields, the current user, database tables, you name it. (Feeling the power yet? :) ) You can also choose whether to store your computed field values in the database with other content fields, or have them "calculated" on the fly during node views.
Layouts
- https://www.drupal.org/project/gridstack - GridStack provides integration with gridstack.js as a dynamic layout creator for both two-dimensional layouts (Masonry, Packery, Isotope, native browser Grid Layout), and linear or one-dimensional layouts (Bootstrap/ Foundation, etc.) with drag-and-drop. A few optional field formatters, and Views style plugin.
- https://www.drupal.org/project/outlayer - Integrates Outlayer for layout libraries like Isotope, Masonry, Packery with Blazy and GridStack. Outlayer will make awesome GridStack, including native CSS Grid (8.x-1.3+), or custom defined grid layouts filterable, sortable, searchable.
- https://www.drupal.org/project/mason - Provides Mason integration to create a perfect gapless grid of elements.This is not Masonry, or Isotope or Gridalicious. Mason fills in those ugly gaps, and creates a perfectly filled space.The module provides a Views style plugin and few field formatters to return results as a Mason grid.
- https://www.drupal.org/project/masonry_view_style - a simplified Masonry Views output style without contrib module dependencies.
Paragraphs
- https://www.drupal.org/project/paragraphs - 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.
- https://www.drupal.org/project/layout_paragraphs - Layout Paragraphs provides an intuitive drag-and-drop experience for building flexible layouts with paragraphs. The module was designed from the ground up with paragraphs in mind, and works seamlessly with existing paragraph reference fields.
- https://www.drupal.org/project/paragraphs_sets - allows to create different sets of paragraphs.These sets can be automatically added to a new entity or selected while creating/editing the entity.This allows editors to add content way faster because they do not need to add all required paragraphs manually and can focus on the content.
- https://www.drupal.org/project/paragraphs_features - provides few additional features for paragraphs module.
- https://www.drupal.org/project/paragraphs_ee - intended to facilitate the editorial workflow and to simplify the work of the editors using Paragraphs.The module allows your editors to add the most important Paragraphs in conjunction with "Add In Between" (provided by Paragraphs Features) to the page with a single click.Furthermore, Paragraphs can be assigned to one or more categories so that they can be found more easily in the revised modal dialog.
- https://www.drupal.org/project/parade - A package built on top of the awesome Paragraphs module, featuring common sections and onepage-site solutions.
Forms
- http://drupal.org/project/webform - Webform is the module for making forms and surveys in Drupal. After a submission customizable e-mails can be sent to administrators and/or submitters. Results can be exported into Excel or other spreadsheet applications. Webform also provides some basic statistical review and has an extensive API for expanding its features.
- http://drupal.org/project/formblock - Enables the presentation of user registration, site wide contact, or node creation forms in blocks. This is particularly useful for including forms on panels.
- http://drupal.org/project/formtips - Form Tips module uses JavaScript to move form description/help text to tooltips. It helps to reduce form clutter by removing form descriptions from the page and only displaying them when needed.
- http://drupal.org/project/field_validation - This module provides a collection of configurable validation rules for your field instances.
Aggregation
- http://drupal.org/project/feeds - Feeds is the module for importing or aggregating data into nodes, users, taxonomy terms and other content entities using a web interface without coding a migration. Data can be imported from various formats, such as CSV, JSON, XML and RSS feeds.
- https://www.drupal.org/project/feeds_tamper - Feeds Tamper provides a small plugin architecture for Feeds to modify data before it gets saved. Several plugins are available by default and are described in the examples section below. Additional plugins can be added in separate modules or through the issue queue.
- https://www.drupal.org/project/feeds_ex - A set of extensible parsers for Feeds.Provided parsers, XPath XML & HTML, JSONPath JSON & JSON lines parser, JMESPath JSON & JSON lines parser, QueryPath XML & HTML
- https://www.drupal.org/project/feeds_dependency - add a Feed as a dependency to an another Feed. Importing a Feed will import first the feed set as a dependency, and then main feed will be imported.
to sort
- https://www.drupal.org/project/login_destination - The Login Destination module allows you to customize the destination that a user is redirected to after logging in, registering to the site (7.x), using a one-time login link or logging out (7.x). The destination can be an internal page or an external URL. It is possible to specify certain conditions like referring pages or user roles and make the destination depend upon them. You may use PHP snippets to provide custom conditions and destinations. It is also possible to keep users on the currently visited page after logging in or out.
- http://drupal.org/project/linkit - Linkit provides an easy interface for internal and external linking with wysiwyg editors by using an autocomplete field. Linkit has by default support for nodes, users, taxonomy terms, files, comments and basic support for all types of entities that defines a canonical link template.
- http://drupal.org/project/content_lock - Block concurrent editing: When a user is editing a node, any other user that attempts to edit the same node will be blocked from doing so, and notified that the content is already being edited.
- https://www.drupal.org/project/faq - The Frequently Asked Questions (faq) module allows users, with appropriate permissions, to create question and answer pairs which they want displayed on the 'faq' page. The 'faq' page is automatically generated from the FAQ nodes configured. Basic Views layouts are also provided and can be customised via the Views UI (rather than via the module settings page).
- http://drupal.org/project/scheduler - Scheduler gives content editors the ability to schedule nodes to be published and unpublished at specified dates and times in the future.
- http://drupal.org/project/diff - This module adds a tab for sufficiently permissioned users. The tab shows all revisions like standard Drupal but it also allows pretty viewing of all added/changed/deleted words between revisions.
- http://drupal.org/project/geshifilter - similar to above
- http://drupal.org/project/forward - 'forward page by e-mail'
- https://drupal.org/project/markdown - Provides Markdown filter integration for Drupal input formats. The Markdown syntax is designed to co-exist with HTML, so you can set up input formats with both HTML and Markdown support. It is also meant to be as human-readable as possible when left as "source".
- https://drupal.org/project/typogrify - Typogrify.module brings the typographic refinements of Typogrify to Drupal.
- https://www.drupal.org/project/flippy - an ultra-simple module that generates previous/next pagers for content types. On the Node type administration screen, you can turn Flippy on or offfor each content type. It'll generate a unique pager for each content type, so you can page through Articles or page through Blog posts, but y
Configuration management, backups, migration
- https://www.drupal.org/project/backup_migrate - Back up and restore your Drupal MySQL database, code, and files or migrate a site between environments. Backup and Migrate supports gzip, bzip and zip compression as well as automatic scheduled backups.
- https://www.drupal.org/project/migrate_devel - Utilities to help out developers when creating migrations.
- https://www.drupal.org/project/migrate_process_entity - provides an additional process plugin to get field values from Drupal 8 entities within a migration. Both core's entity_exists and Migrate Plus's entity_lookup can look up an existing Drupal entity and return its ID. entity_value can also do this, but that's not it's primary purpose. The primary purpose is to retrieve field values from the entity instead of just the ID.
- https://www.drupal.org/project/migrate_plus
- https://gitlab.com/drupalspoons/migrate_plus - provides extensions to core migration framework functionality, as well as examples.
- https://www.drupal.org/project/migrate_manifest - provides a Drush command for running migrations using a manifest format.
- https://www.drupal.org/project/migrate_run - fork of Migrate Tools Drush runner. All credits goes to Migrate Tools team.DescriptionUnlike Migrate Tools, this module has no dependency on Migrate Plus and is using the core discovery, by discovering only migrations stored in migrations/ directory, in each enabled module.The module provides only the Drush runner, without any other UI features included in Migrate Tools. The runner doesn't support migration groups, which are part of Migrate Plus, but on drush migrate-status, by using the --tag option, migrations can be grouped and filtered by tags.
- https://www.drupal.org/project/cms_content_sync - CMS Content Sync is a module that provides content synchronization features between Drupal sites using a Node.js based Sync Core. The service is built to support the synchronization of a huge amount of data, including content and media assets between many Drupal sites that can't be handled by Drupal itself.
- https://www.drupal.org/project/deploy - The Deploy module is designed to allow users to easily stage and preview content for a Drupal site. Deploy automatically manages dependencies between entities (like node references). It is designed to have a rich API which can be easily extended to be used in a variety of content staging situations.
Taxonomy
- https://www.drupal.org/project/term_reference_tree - This module provides an expandable tree widget for the Taxonomy Term Reference field in Drupal 7. This widget is intended to serve as a replacement for Drupal's core Taxonomy Term Reference widget, which is a flat list of radio buttons or checkboxes and not necessarily fit for medium to large taxonomy trees.
- https://www.drupal.org/project/hierarchical_term_formatter - This module provides hierarchical term formatters for taxonomy reference fields. In other words, it can display a taxonomy term reference on, say, a node as Parent > Child, rather than just Child.
- https://www.drupal.org/project/tagadelic - Tagadelic provides an API and a few simple turnkey modules, which allows you to easily create tagclouds, weighted lists, search-clouds and such.
- https://www.drupal.org/project/shs - defines a new form widget for taxonomy fields to select a term by "browsing" through the vocabularies hierarchy.
- https://www.drupal.org/project/taxonomy_manager - This module provides a powerful interface for managing taxonomies. A vocabulary gets displayed in a dynamic tree view, where parent terms can be expanded to list their nested child terms or can be collapsed.
- https://www.drupal.org/project/taxonomy_unique - Taxonomy unique prohibits saving a taxonomy term when a term with the same name exists in the same vocabulary. You can configure it individually for each vocabulary, and you can set custom error messages if a duplicate is found.
Users
- http://drupal.org/project/userprotect - This module allows fine-grained access control of user administrators, by providing various editing protection for users. The protections can be specific to a user, or applied to all users in a role.
Cookies
- https://www.drupal.org/project/eu_cookie_compliance - This module addresses the General Data Protection Regulation (GDPR) that came into effect 25th May 2018, and the EU Directive on Privacy and Electronic Communications from 2012. It provides a GDPR cookie banner where you can gather consent from the user when the website stores cookies on their computer or otherwise handles their personal information.
Anti-spam
- http://www.drupal.org/project/spamspan - obfuscates email addresses to help prevent spambots from collecting them
- https://www.drupal.org/project/protected_submissions - light-weight, non-intrusive spam protection module that enables rejection of node, comment, webform, user profile, contact form and revision log submissions which contain undesired language characters or preset patterns.
- http://www.drupal.org/project/spamicide - adds an input field to each form then hides it with css, when spam bots fill in the field the form is discarded.
- https://www.drupal.org/project/botbattler - lightweight, 100% clientside, anti-spam solution for forms. JS required
- https://www.drupal.org/project/form_protect - Form Protect is a tiny, simple, non-invasive spam protection for forms. The protection is based on the assumption that spam bots are not running JavaScript when loading targeted forms. JS required, has redirect page for no-JS
- https://www.drupal.org/project/captcha_free - eliminate those robot user registrations and having to go in and delete all the bogus users. All without having to use the annoying captcha.
- https://www.drupal.org/project/antibot - JS required
- https://www.drupal.org/project/stop_spam - The module provides some tricks to stop sending spam on your website.
CAPTCHA
- http://www.rupal.org/project/captcha - 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.
- https://www.drupal.org/project/trick_question - A very small and simple CAPTCHA-type spam prevention module. A lightweight, compact and simple alternative to larger and more complex modules
- https://www.drupal.org/project/custom_captcha - a simple captcha, no need to activate or to worry about Apis. Custom captcha built to make developer's life easier to prevent spam registration and forms
Security
- https://www.drupal.org/project/remove_http_headers - The Remove HTTP headers module removes configured HTTP headers from the response. Also removes <meta name="Generator" content="Drupal 8 (https://www.drupal.org)"> from the <head> tag if the X-Generator HTTP header is configured to be removed. By default the X-Generator, X-Drupal-Dynamic-Cache and X-Drupal-Cache HTTP headers are configured to be removed.
- https://www.drupal.org/project/seckit - SecKit provides Drupal with various security-hardening options. This lets your mitigate the risks of exploitation of different web application vulnerabilities.
- https://www.drupal.org/project/security_login_secure - provides login security, registration security, brute force attack prevention, IP monitoring and IP blacklisting, DOS attack prevention, strong password enforcement, etc. We provide you enterprise-level security, protecting your Drupal site from hackers and malware.
- https://www.drupal.org/project/login_security - protect and restrict access by adding access control features to the login forms (default login form in /user and the block called "login form block"). Enabling this module, a site administrator may limit the number of invalid login attempts before blocking accounts, or deny access by IP address, temporarily or permanently.
- https://www.drupal.org/project/rename_admin_paths - The purpose of this module is to secure drupal backend by overriding admin path.
- https://www.drupal.org/project/autoban - Autoban allows to automatize IP ban using watchdog table by the module rules. Need enable Database logging module (core) and at least one IP Ban Providers submodule: Autoban Core Ban (integrated with core Ban module) and/or Autoban Advanced Ban (integrated with Advanced Ban module).
Reports
- https://www.drupal.org/project/composer_security_checker - check any installed Composer packages against using the Symfony Security Checker service (using their awesome connection library), and output a report similar to the core Update Manager report.
Passwords
- https://www.drupal.org/project/force_password_change - This module allows administrators to force users, by role, individual user, or newly created user, to change their password on their next page load or login, and/or expire their passwords after a period of time.
- https://www.drupal.org/project/password_policy - This module provides a way to enforce restrictions on user passwords by defining password policies.
Honeypots
- http://drupal.org/project/honeypot - 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.
- https://www.drupal.org/project/httpbl - can prevent email address harvesters and comment spammers from visiting your site by using a centralized DNS blacklist. It requires a free Project Honey Pot membership. This module provides efficient blacklist lookups and blocks malicious visitors effectively.
Social
- http://drupal.org/project/flag - Flag is a flexible flagging system that is completely customizable by the administrator. Using this module, the site administrator can provide any number of flags for nodes, comments, users, and any other type of entity. Some possibilities include bookmarks, marking important, friends, or flag as offensive. With extensive views integration, you can create custom lists of popular content or keep tabs on important content.
- https://www.drupal.org/project/vote_up_down - Allows votes on some drupal entities and provides the base for implementing votes on other entities.
- http://drupal.org/project/message - The Message module is the core of the message stack. It enables logging and displaying system events in a number of different use cases. Events that are recorded over time are sometimes call activity streams. Exportable messages subtypes can be created for different use cases with custom fields and display (view) modes.
- http://drupal.org/project/messaging
Sharing
- http://drupal.org/project/forward - Adds a "forward this page" link to each node. This module allows users to email a specific node or other entity on your site to a friend. You can customize the link text and icon and choose the view modes on which the link appears. You can also customize the email template to match the rest of your site. The module includes a report on which pages are forwarded the most and a log of all forwarding activity.
- https://www.drupal.org/project/sharethis - Integration with the ShareThis social bookmarking utility on selected node types.
IRC
- https://www.drupal.org/project/qwebirc - This module takes the qwebirc IRC client, which has created a very nice (AJAX) widget that gives your community members access to IRC channels via a window (iFramed widget) on one of your site's pages.
Translation
- https://www.drupal.org/project/potion - Put your translations in motion.Provides a normalized way to collect internationalization strings to export, merge & create .po files from versatile sources such as Twig, PHP or YML files.Ensure an enhanced Developer Experience (DX) when dealing with translations & multilingual websites.
API
- https://www.drupal.org/project/relaxed - This module provides a generic RESTful API for all content entities. It extends the core REST API with better support for translations, revisions, file attachments, UUID references etc.
- https://www.drupal.org/project/schemata - Facilitate generation of schema definitions of Drupal 8 data models as produced by Serialization for Drupal 8 REST. Currently supported: JSON Schema for JSON, HAL JSON, and JSON API serialized Drupal Content Entities.
Themeing
- https://www.drupal.org/project/asset_injector - This combines the two modules, JS Injector and CSS Injector, into a single module for simplicity.
- https://www.drupal.org/project/role_based_theme_switcher - help users to set the theme for different Roles.
Themes
- Theme project | Drupal.org - filter: D9, active
- https://www.drupal.org/project/bootstrap_barrio - a Drupal 8/9 - Bootstrap 4 Base Theme. Drupal markup is completely overwrite as standard Bootstrap 4 markup using from roots twig templates referencing only to Bootstrap CSS, and little custom CSS. Barrio is Flex based for whatever is not covered by Bootstrap.
- https://www.drupal.org/project/bootstrap_sass - This is a Barrio subtheme that simplifies integrating Bootstrap 4 SASS with Drupal. This subtheme overrides almost every CSS from Drupal and replaces where posible Bootstrap variables in order to generate from roots a new set of CSS files.
- https://www.drupal.org/project/bootstrap4 - This is a very non-prescriptive vanilla Bootstrap 4 theme with simple configuration. It can be used out of the box or as a subtheme for creating very flexible web designs with minimal changes (just override Bootstrap 4 variables.scss and recompile css!)
- https://www.drupal.org/project/radix - a base theme for Drupal. It has Bootstrap 4, Sass, ES6 and BrowserSync built-in.
- https://www.drupal.org/project/basic - boasts a clean HTML5 structure with extensible CSS classes for unlimited theming possibilities as well as a top-down load order for improved SEO. It is fully responsive out-of-the-box and provides an adaptive, elegant, SASS mixin library and grid system.Basic's goal is to provide themers the building blocks and best practices needed to get their designs up and running quickly and simply.
- https://www.drupal.org/project/fortytwo - A modern responsive base theme incorporating the latest technologies like Gulp, Sass, BrowserSync and more.
- https://www.drupal.org/project/base_zymphonies_theme - a Mobile-first Drupal ready-made responsive theme. Easy to customize, Well written SASS which easily can customize theme color, font-size, layout etc. This theme suitable for any creative or business websites
- https://www.drupal.org/project/vartheme_bs4 - base theme for Varbase standard websites.Based on the Bootstrap Barrio theme (Bootstrap 4 - SASS).
- https://www.drupal.org/project/webtheme - A SASS base theme for Webship standard websites.Based on Bootstrap 4 framework using SASS,and extending Vartheme BS4 contrib theme.and extending Barrio (Bootstrap 4) contrib theme.
- https://www.drupal.org/project/adminimal_theme - the most popular contribute Administration Theme for Drupal
Favicons
- https://www.drupal.org/project/responsive_favicons - This module adds the favicons generated by http://realfavicongenerator.net/ to your site. The responsive name comes from the fact that many devices are catered for including iPhone, Android, iPad, other tablets and desktops. This module can prove to be really useful in Drupal multisite setups where you do not want to pollute the base of the docroot with loads of icons that pertain to only a single site. This module allows you to store per site variations of the icons, in each site's respective public files directory.
Performance
- http://drupal.org/project/purge - The purge module facilitates cleaning external caching systems, reverse proxies and CDNs as content actually changes. This allows external caching layers to keep unchanged content cached infinitely, making content delivery more efficient, resilient and better guarded against traffic spikes.
- http://drupal.org/project/fast_404 - This module combines a very common method of handling missing image/file 404 errors (discussed here and planned for Drupal 8) with a method created by dpardo (a co-maintainer of this project) to deliver super fast 404 error pages for both missing images and bad paths. Depending on which method of implementation you choose (aggressive or super aggressive) you can deliver 404 errors using less than 1MB of memory on your server.
CloudFlare
- https://www.drupal.org/project/cloudflare - CloudFlare is a FREE reverse proxy, firewall, and global content delivery network and can be implemented without installing any server software or hardware.
SEO
- http://drupal.org/project/metatag - 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.
- https://www.drupal.org/project/metatag_current_page_title_override - Provides an additional field in the Basic Metatags section to allow you to override the [current-page:title] token.
Analytics
- http://drupal.org/project/google_analytics - Adds the Google Analytics web statistics tracking system to your website.
- https://www.drupal.org/project/matomo - Adds the Matomo web statistics tracking system to your website.
Site provision
Two make files; mysite.build and mysite.make.
mysite.build is brief:
core = 7.x api = 2 projects[drupal][type] = "core" ; Our distribution projects[mysite][type] = "profile" projects[mysite][download][type] = "git" projects[mysite][download][url] = "git@gitserver.com:mysite.git" projects[mysite][download][branch] = "develop"
mysite.make contains the list of modules, themes, and libraries to download and add to the site.
Distribution
- https://www.drupal.org/project/varbase - an enhanced Drupal distribution packed with adaptive functionalities and essential modules, that speed up your development, and provides you with standardized configurations, making your life easier.The essence of Varbase, lies within the basic concept that initiated it; DRY (Don’t Repeat Yourself). Varbase handles that for you, relieving you from repeating all the modules, features, configurations that are included in every Drupal project.Varbase Travis CI Build PassingIt's made with the following benefits in mind: Speeds up development Offers standardized configuration and best-practices Comes with a lot of needed functionalities/modules for every-day Drupal site Tested, tested, and tested
E-commerce
See also Drupal Distros#E-commerce
Payment
- Payment is a general payment platform which allows other modules to use any of the payment methods that plug into Payment. With Payment we only need one one Paypal, one credit card and one iDEAL module to use with every single webshop or payment form that you want (applies to any payment method that works with Payment). This shortens development time and improves support, because only one instead of three Paypal modules need to be maintained, and simplifies UX, because all payment (method) information is now located in one place.
Payment method controller modules;
- https://drupal.org/project/paypal_payment
- https://drupal.org/project/ogone
- https://drupal.org/project/stripe
- https://drupal.org/project/pay_realex - xml request
Other
- https://drupal.org/sandbox/jlyon/1472346 - stripe/drupal webform
Coding
Basics
- Drupal's basic building blocks - the search for core, Ronald Ashri, Nov 2009
- Drupal programming from an object-oriented perspective
- Drupal as an Application Development Framework - great dev overview video, shame about the audio
$variable_name
- g.d.o: PHP
- Beginning Drupal Module Development or How I Wrote the Cacheflusher Module (Part 2) - has a good hook overview from a module perspective
Modules
- http://drupal.org/project/examples - various examples
- http://drupal.org/project/module_builder - A module which auto-generates a skeleton or "scaffolding" for a module, along with hints on how to fill them in. Useful for newbie developers to learn how Drupal code works, and seasoned developers who are too lazy to look up what arguments a function has to take.
- http://drupal.org/project/coder - Coder checks your Drupal code against coding standards and other best practices. It can also fix coding standard violations for you with the phpcbf command from PHP_CodeSniffer, see the installation instructions and usage examples. Those checks apply to all versions of Drupal, so you can use Coder 8.x-3.x to check Drupal 7 code.
- https://www.drupal.org/project/libraries - The common denominator for all Drupal modules/profiles/themes that integrate with external libraries.This module introduces a common repository for libraries in sites/all/libraries resp. sites/<domain>/libraries for contributed modules.
Patches
patch -p1 < path/file.patch
or
git apply path/file.patch
Hooks
"Drupal's module system is based on the concept of "hooks". A hook is a PHP function that is named foo_bar(), where "foo" is the name of the module (whose filename is thus foo.module) and "bar" is the name of the hook. Each hook has a defined set of parameters and a specified result type.
"To extend Drupal, a module need simply implement a hook. When Drupal wishes to allow intervention from modules, it determines which modules implement a hook and calls that hook in all enabled modules that implement it."
Menu system (path)
- How the menu system works (a Drupal how-to) - how the menu system translates paths to callback functions== REST / API ==
- https://www.drupal.org/project/relaxed - This module provides a generic RESTful API for all content entities. It extends the core REST API with better support for translations, revisions, file attachments, UUID references etc.
- https://www.drupal.org/project/schemata - Facilitate generation of schema definitions of Drupal 8 data models as produced by Serialization for Drupal 8 REST. Currently supported: JSON Schema for JSON, HAL JSON, and JSON API serialized Drupal Content Entities.
Humour
- http://drupal.org/project/doabarrelroll - Habe you ever wondered how does Google do a barrel roll when you type in 'do a barrel roll' in the search bar? Have you ever wanted to have the same functionality in your web site? Look no further: this module will give all the barrel roll awesomeness you ever wanted.
- http://drupal.org/project/konamicode - The Konami Code is a cheat code that appeared in many Konami video games. The Konami Code module makes it so that when users enter a given code on your website, it invokes a certain action.