Understanding Drupal
This guide gives you a bigger picture of Drupal concepts, helping you to understand its framework.
System requirements
This guide covers detailed system requirements for a Drupal installation.
Installing Drupal
This guide covers preparing, running the installation script, and the steps that should be done after the installation script has completed.
Updating Drupal
How to update your Drupal site.
- Overview of options
- Update core via Composer
- Update core manually
- Update core via Drush
- Update modules
- Migrate composer project for Drupal earlier than 8.8.0
- Troubleshooting database updates
- Known database update issues and workarounds
- Responding to critical security update advisories
- Automatic Updates
- Drupal updates and deployments
Administering a Drupal site
Administering a Drupal site
Extending Drupal
Extend your Drupal site’s functionality with contributed modules or alter its appearance with contributed themes.
Contributed modules
Documentation for contributed modules for Drupal.
- A11Y Paragraphs Tabs
- API Authentication
- Accelerated Mobile Pages (AMP)
- Access NASA API
- Accessibility Scanner
- AddToAny Share Buttons
- Address for Luxembourg
- Address for Rep. of Moldova
- Adobe Launch
- Advanced CSS/JS Aggregation
- Advanced Insert View
- Advanced Varnish
- Akamai
- Album Photos
- Alexa
- Allow a content type only once (Only One)
- Announcements Feed
- Anu LMS
- Apigee API Catalog
- Apigee Developer Portal Kickstart
- Apigee Edge
- Apigee Monetization
- Apple News
- Astrology
- AudioField
- AutoFloat
- Automatic Updates
- Avatar Kit
- BEE hotel
- Backup and Migrate
- Bamboo Twig
- Better Exposed Filters
- Bibliography & Citation
- BigCommerce
- Block Class
- Block Form Alter
- Block List Override
- Block Style Plugins
- Blog
- Boost
- Bootstrap Layouts
- Bootstrap Paragraphs
- Bootstrap Quick Tabs
- Bothive Chatbot
- Botman
- Boxout
- Braintree Cashier
- Breakgen
- Brightcove Video Connect
- Bundle override
- Burndown
- Business Rules
- Bynder
- CAS
- CDEK API
- CKEditor 5 Premium Features
- CKEditor Accessibility Auditor
- CKEditor CodeMirror
- CKEditor Entity Link
- CKEditor Font Size and Family
- CKEditor Google Search
- CKEditor Libraries Group
- CKEditor module
- CKEditor: N1ED plugin. Widgets, Bootstrap blocks, widgets, image tools
- CMRF Core Documentation
- CSV Importer
- CSV to Config
- Cached moderation state
- Calendar View
- Canvas LTI
- Captcha Keypad
- Changed Fields API (8.x-3.x)
- Changed Fields API
- Chaos Tool Suite (ctools)
- Chart Suite Guide
- Charts
- Chatbot API
- Chatbot Framework
- Claro
- Cloud
- Cloudflare Stream
- Cloudinary
- Color Field
- Color module
- Commerce
- Commerce API
- Commerce Affirm Credit Payment Gateway
- Commerce Approve
- Commerce Authorize.Net
- Commerce Braintree
- Commerce Cart API
- Commerce Cart Flyout
- Commerce DIBS integration
- Commerce Easy
- Commerce Funds
- Commerce Google Tag Manager
- Commerce Ingenico
- Commerce Inventory
- Commerce Migrate
- Commerce PVT
- Commerce Pagseguro Transparente
- Commerce PayPal 8.x
- Commerce Payment Extra
- Commerce Point of Sale (POS)
- Commerce Postfinance
- Commerce Recurring Metered
- Commerce Rental
- Commerce Reporting
- Commerce Square Connect
- Commerce Time Slots
- Commerce Tpay
- Commerce TrustedShops
- Commerce Variation Add-on
- Commerce Webform Order
- Commerce iATS
- Commerce iDEAL Payment Gateway
- Component Schema
- Components
- Computed Field Plugin
- Conditional Fields
- Config Override Inspector
- Config Pages
- Config Single Export
- Config Token
- Config partial export
- Configuration Kits
- Configuration Split
- Content Alerts
- Content Feedback
- Content Import
- Content Packager
- Content Planner
- Content Synchronization
- Content-Security-Policy
- ContentAccess
- Create fields programmatically
- Crossword
- CsvtoTable
- Cura Childcare Suite
- Cura Childcare Suite
- Currency
- Custom 4XX Pages
- Custom JS Module
- Custom breadcrumbs
- D8 Rules Essentials
- Date Augmenter API
- Decoupled Blocks: Vue.js
- Decoupled Toolbox
- Decoupled Toolbox
- Decoupled quiz
- Default Content for D8
- Deploy - Content Staging
- Deploying Meilisearch to production
- Devel
- Devel Generate Commerce
- Developer Suite
- Developer portal
- Digital Signage Framework
- Display Suite Chained Fields
- Dominican Catalogus Module
- Drupal Chatbot
- Drupal Diversity & Inclusion
- Drupal OAuth & OpenID Connect Login - OAuth2 Client SSO Login
- Drupal OAuth OIDC Login
- Drupal Remote Dashboard
- Drupal Slider
- Drupal WhatsApp
- Drupal YouTuber
- Drupal driver for SQL Server and SQL Azure
- Druqs (Drupal Quick Search)
- ECA: Event - Condition - Action
- ECC
- EU Cookie Compliance
- EVA
- Easy Breadcrumb
- Easy News
- Editor Button Link
- Ek Jitsi
- Elasticsearch Connector
- Email Verification / SMS Verification / OTP Verification
- Encrypt
- Entitree Administration Guide
- Entity Access Password
- Entity Browser - Table Layout
- Entity Browser
- Entity Pager
- Entity Parser
- Entity Prepopulate
- Entity Print
- Entity Reference Facet Link
- Entity Reference Views
- Entity Reference Views Select
- Entity Share
- Entity Share WebSub
- Entity Update
- Entity Usage
- Entity Usage Addons
- Entity browser
- Epsilon Harmony Connector 8.x
- Evaluate Webform
- Events Logger
- Excel Importer
- Exerciser Usage
- Expire reset password link
- Extensions API
- External Authentication
- External Entities
- Facebook Instant Articles
- Facets
- Facets Date Range Picker
- Factory Lollipop
- Feature Toggle
- Features
- Feeds
- Feeds Migrate
- Feeds Paragraphs
- Feeds extensible parsers
- Field Encrypt
- Field Gallery
- Field Inheritance
- Field description tooltip
- File Extractor
- Filebrowser
- FillPDF
- Firebase Authentication Guide
- Fivestar
- Flag Lists
- Flashpoint Education
- Flexible Views
- Flow2
- Fluent
- Flysystem
- FolderShare Guide
- Font Awesome Icons
- Footnotes
- Form mode manager
- FormAlter as Plugin
- Formatter Suite Guide
- Formdazzle!
- Forms steps
- FortyTwo
- Freelinking
- GIT Info Report
- Gatsby Integration
- General Data Protection Regulation
- Geocluster D8/D9 Set-up
- Geolocation Field
- Get Linkedin Posts
- Ghost Inspector Integrator
- Ghost Inspector Integrator
- Give
- GlobalDoc’s LangXpert Connect for Drupal
- Googalytics
- Google API PHP Client
- Google Analytics
- Google Analytics Counter
- Google Analytics Search API Autocomplete
- Google Authentication for Users
- Google Calendar Import
- Gophish Integration
- GovUK Notify
- GrapesJs Editor - Page builder
- GraphQL
- Group
- Group Content Moderation
- Group Flex
- Group Invite
- Group Media
- Group Subscription
- Group by Field Widget
- Grouper Usage
- Gutenberg
- Gutenberg Content Embed
- Guzzle REST Generator
- HAL module
- HAX
- HTML Mail
- HTML Title
- HTTP Client Manager
- Hanging Conjunctions Filter
- HelloSign
- Hidden Tab
- Honeypot
- Hotkeys for Save
- Human Presence Form Protection
- Hux
- IMCE File Manager
- IPMA Weather
- Iframe Media Embed Video
- Image Base64 Formatter
- Image Optimize
- Image Replace
- Imageshop
- Immoweb API Client
- Inline Formatter Field
- Insert
- Instagram Block
- Intercept
- Islandora
- JFU 1.0.0-alpha6
- JSON:API Search API
- Janrain Connect
- Juicer - Social Media Feed Aggregator
- Key
- Keycloak OpenID Connect
- Klaro Consent Management
- Konami Code
- LDAP Integration
- LDAP Integration with Active Directory and OpenLDAP - NTLM & Kerberos Login
- Language Negotiation Url Matrix
- Layout BG
- Layout Builder Additions
- Layout Builder Block Sanitizer
- Layout Builder Restrictions
- Layout Builder Settings Report
- Layout Builder Styles
- Layout Builder Tabs Section
- Layout Components
- Layout Paragraphs
- Lazy-load
- Leaflet More Markers
- Libraries API
- LiftIgniter
- Lightgallery
- Lightgallery
- Lightning Accessibility
- Lightweight Directory Access Protocol (LDAP)
- Link attributes
- Link icon
- Linkback
- Lndr
- Localized Configuration
- Loco Translate
- Loqate
- Ludwig
- Lunr search
- Maestro
- Mailchimp
- Mapbox Field
- Mapbox Field
- Mapbox Field
- Markdown
- Markdown Exporter
- Marketing Cloud
- Mask Field
- Matomo Analytics
- Maxlength
- Media Video Micromodal
- Media: Acquia DAM
- Membership
- Menu Manipulator
- Message Integration
- Message Thread
- Metatag
- Metatag Google Scholar
- Micro Site
- Migrate Magician
- Migrate QA
- Migrate Source CSV
- Migrate Source JCR
- Migration Tools
- Mime Mail
- Modal
- Modifiers
- Moodle REST
- Mother May I
- Multilanguage Form Display
- Multistep Form Framework
- Multiversion
- NASA Astronomy Picture of the Day
- NFT
- Nbox
- Nbox
- Node Type count
- Notify
- OAuth Server - SSO Setup Guides
- OAuth2 & OpenID Connect
- OAuth2 Client
- OEmbed Lazyload
- OH
- Office 365 Connector
- One Time Password SMS
- OpenChurch
- OpenEDU
- OpenID Connect
- OpenID Connect Windows Azure AD
- OpenLayersD8
- Openlayers
- Oracle Driver
- Oracle Eloqua API Redux
- OwnTracks
- PHP filter
- PNX Gallery
- PNX Media
- Packages
- Packagist
- Pagedesigner
- Panopoly 2 for Drupal 8/9
- Paragraphs
- Paragraphs Role Visibility
- Parameter Message
- Paranoia
- Pathauto
- Patternkit
- Performance Budget
- Permalink Block
- Permanent Entities
- Permissions by Term
- Persistent Login
- Place Blocks module
- Plotly.js Graphing
- Poll
- Popularity of modules
- Popup field group
- Potion
- Preview graph QL
- Private DNS for your Dynamic IP internet connection
- Private Message
- Progressive Web App (PWA)
- Progressive Web App (PWA)
- Quadstat
- Quick Edit module
- Quick Node Clone
- Quickchat
- Quicklink
- RDF module
- RELAXed Web Services
- RNG
- Radioactivity
- Radioactivity
- Reactify theme & module
- Read time module basic usage
- Recombee
- Recurring Dates Field
- Recurring Events
- RegEx Field Validation
- Registration Confirm Email Address
- Registration role
- Remote Stream Wrapper
- Responsive Background Image
- Responsive Class Field
- Responsive Image Preload
- Responsive menu
- Rocket.Chat Integration Module Guide
- Role paywall
- Rules
- Rules API POST
- SAML Authentication
- SAML IDP 2.0 Single Sign On (SSO) - SAML Identity Provider
- SAML SP Single Sign On (SSO) - SAML Service Provider
- SMS Framework
- SMS System
- Salesforce Suite
- Scheduled Transitions
- Scheduled Updates
- Scheduler
- Schema.org Metatag
- Search API
- Search API Autocomplete
- Search API Exclude Entity
- Search API Federated Solr
- Search API RediSearch
- Search API Sajari
- Search API Solr
- Search API Xunsearch
- Search API opensolr
- Search and Replace Scanner
- Search404: Automatically search for content when a 404 error occurs
- Search404: Automatically search for content when a 404 error occurs
- Select 2
- Semantic Views
- Sender
- Service Worker Registration
- Sharerich
- Sherpa Webform
- ShrinkTheWeb
- Simple FB Connect
- Simple Instagram Feed
- Simple Node Importer
- Simple Node Importer
- Simple Page Manager
- Simple Popup Blocks
- Simple React CRUD
- Simple React CRUD
- Simple XML sitemap
- Simple multi step form
- Simple multi step form
- Simplenews
- Single Content Sync
- Siteimprove
- Sitemap
- Skilling
- Skins
- Skosmos Feeds
- Smart Content Overview
- Smart Date
- Smart Title
- Smart Trim
- Snippet manager
- Social API
- Social Auth Vipps
- Social Migration
- Social Post Facebook
- Socialfeed
- Socialfeed
- Songkick
- Sound Management
- Spectra Analytics
- Srijan theme
- Statistical Spam Filter
- Step by step guides to configure various 2FA / MFA / TFA methods
- Stop Administrator Login
- Style Selector
- Style Switcher
- Subgroup
- Summit Meeting List
- Superfish Drop-down Menus
- Superfish Drop-down Menus
- Swagger UI Field Formatter
- Switches
- Symfony Mailer
- Symfony Mailer
- Syncer
- Synonyms
- System Monitor
- TMGMT Capita
- TMGMT Plunet
- TacJS
- Targets
- Taxonomy Bulk Actions (TBA)
- Tealium iQ Tag Management
- Telephone International Widget
- Template Entities
- Template Whisperer
- TextRazor - Automatic text classification
- The Better Mega Menu
- Token Filter
- Tombstones
- Tone
- Toolshed
- Tooltip
- Transaction
- Translation Management Tool
- Tweet Feed
- Twig Components
- Twig Render This
- Twig Tools
- Twig tweak
- Twitter API Block
- Twitter Tweets
- Typed Data API Enhancements
- UI Patterns Pattern Lab
- Ubercart
- Uikit Slideshow
- Unisender newsletter
- UpTime Widget
- Upload File History
- User CSV Import
- User Guide for Field Encrypted Searchable - FES
- User History
- User Sync & Provisioning in Drupal
- Using CAT tools for Drupal
- Varbase Editor
- Varnish purger
- Video
- Video Embed Field
- Views Add Button
- Views Bootstrap for Bootstrap 3
- Views Bootstrap for Bootstrap4
- Views Bulk Operations (VBO)
- Views Display Union
- Views Mobile
- Views RSS: Media (MRSS) Elements
- Views Reference Field
- Views Remote Data
- Views Send
- Views Slideshow
- Views TimelineJS
- Views filter content type
- Vipps Recurring Payments: Installation
- VisualN
- Voting API Reaction
- Wallee
- Warden
- Wayfinding
- Web Page Archive
- Web Service Data 8.x and 9.x
- Webform
- Webform Attachment Gated Download
- Webform Eloqua
- Webform Trello
- Webform Workflows Element
- WissKI
- WordPress Migrate
- Wordcount
- Workbench Menu Access
- Workflow
- Workout Usage
- Workout Usage with Drush
- Workspace
- XML-RPC
- Xero Sync
- YAML Content
- YAML To PHP
- Youtube Gallery
- agGrid
- ePayco integration
- htmLawed HTML filter/purifier
- memoQ translation
- reCaptcha v3
- signageOS
- simplytest.me
- temporarily deleted
- If Then Else
Comparison of Contributed Modules
Comparisons between contributed modules
- Comparison of Content Deployment modules
- Comparison of Group modules
- Comparison of image cropping and resizing modules
- Comparison of Instagram modules
- Comparison of Layout Modules
- Comparison of Mapping modules
- Comparison of Twitter modules
- Comparison of Views embedded field modules
- Popularity of modules
- Comparison of Date, Time, and Event Modules
- Comparison of Lightbox-type modules
Contributed themes
Drupal contributed themes
Contributed Field Formatters
A guide to contributed modules that provide field formatter for core field types.
Drupal distributions
Documentation for Drupal 9 distributions.
Configuration management
This guide explains how to import and export your site's configuration and manage it with version control.
Multisite Drupal
Multisite Drupal
Accessibility
Accessibility in Drupal
Security in Drupal
Securing your Drupal site.
Troubleshooting Drupal
How to make your Drupal installation work (again).
Theming Drupal
How to work with Drupal themes.
- Defining a theme with an .info.yml file
- Drupal theme folder structure
- Adding Regions to a Theme
- Adding stylesheets (CSS) and JavaScript (JS) to a Drupal theme
- Twig in Drupal
- Creating sub-themes
- Using Stable/Stable 9 as a base theme
- Classy themes css selectors
- Including Default Image Styles With Your Theme
- Including Part Template
- Using attributes in templates
- Modifying attributes in a .theme file
- Working with breakpoints in Drupal
- Creating advanced theme settings
- Theming differences between Drupal 6, 7 & 8
- Upgrading 7.x themes to 8.x
- Drupal Twig conversion instructions (tpl.php to html.twig)
- Creating automation tools for custom themes (Gulpjs)
- Sub-Theme inheritance
- Z-indexes in Drupal 8
Mobile Drupal sites
Mobile guide for Drupal 8
Creating modules
This guide includes tutorials and other information that you need to create modules for Drupal.
- Getting Started - Background & Prerequisites
- Naming and placing your Drupal module
- Let Drupal know about your module with an .info.yml file
- Add a composer.json file
- Include default configuration in your Drupal module
- Defining and using your own configuration in Drupal
- Create a custom page
- Creating custom blocks
- Creating custom field types, widgets, and formatters
- Subscribe to and dispatch events
- Building a Views display style plugin for Drupal
- Adding stylesheets (CSS) and JavaScript (JS) to a Drupal module
- Step by step tutorial "Lorem Ipsum"
- Step by step tutorial: Hello World
- Understanding hooks
Drupal APIs
Drupal has many APIs that make it easy to alter and extend, and to help developers with common tasks. Learn how to use them in your code
- Authentication API
- Block API
- Cache API
- (deprecated) CKEditor 4 API
- CKEditor 5 API
- Configuration API
- Database API
- Entity API
- Entity Validation API
- Filter API
- Form API
- JavaScript API
- Layout API
- Logging API
- Menu API
- Middleware API
- Migrate API
- Plugin API
- Quick Edit API
- RESTful Web Services API
- Render API
- Responses
- Routing system
- Runtime Assertions
- Serialization API
- Services and dependency injection
- State API
- Text Editor API
- Tour API
- Translation API (Code text)
- Typed Data API
- Update API
Automated testing
The testing framework in Drupal (Testing module, previously SimpleTest).
Managing site performance and scalability
Managing site performance and scalability
Multilingual guide
Multilingual guide for Drupal 8 or higher.
Upgrading Drupal
Upgrading your site between Drupal major versions
- Preparing your site to upgrade to a newer major version
- Upgrading from Drupal 6 or 7 to Drupal 9 (or later)
- Upgrading from Drupal 8 (or later) to a newer major version
- Preparing an upgrade
- Prepare to upgrade: Learn key Drupal concepts
- Prepare to upgrade: Choosing the approach
- Upgrading multilingual Drupal 6 to Drupal 9
- Upgrading multilingual Drupal 7 to Drupal 9
- Drupal 9 (or later) migrate modules
- Upgrade using web browser
- Upgrade using Drush
- Known issues when upgrading from Drupal 6 or 7 to Drupal 9
- Customize migrations when upgrading to Drupal 9
- Contributing to Migrate
Upgrading and converting Drupal 7 modules
This guide provides information and specific steps for upgrading contributed and custom modules from Drupal 7 to the latest version.
- Intro & Before you start: Setting up a Drupal 8 module dev environment
- Step 1: Convert mymodule.info to mymodule.info.yml
- Step 2: Convert automated tests to Drupal 8
- Step 3: Convert hook_menu() and forms
- Step 4: Convert Drupal 7 Variables to Drupal 8 Configuration
- Step 5: How to upgrade D7 variables to D8's state system
- Debugging Drupal 8 module upgrades
- Resources and tutorials
- D7 to D8 Upgrade: Generated HTML
- D7 to D8 tutorial: pathinfo module
- D7 to D8 upgrade tutorial: Pants module
- D7 to D8 upgrade: fields, widgets and formatters
- D7 to D8 upgrade tutorial: Convert hook_menu() and hook_menu_alter() to Drupal 8 APIs
- WSCCI Conversion Guide
- WSCCI Conversion Guide - Pass 1
- WSCCI Conversion Guide - Pass 2
- WSCCI Conversion Guide - Pass 3
- WSCCI Conversion Guide - Best practices
Core modules and themes
Drupal core structure and components.
External Libraries in Core
Details about list of external PHP and JS libraries core depends on.
Umami: Drupal demonstration installation profile
Sample Drupal site based on a fictional food magazine