Understanding Drupal 8
This guide gives you a big picture overview of Drupal 8 concepts, helping you to understand the framework behind Drupal 8.
System requirements
This guide covers detailed system requirements for a Drupal 8 installation.
Installing Drupal 8
This guide covers preparing, running the installation script, and the steps that should be done after the installation script has completed.
Updating Drupal 8
How to update your Drupal 8 site
Administering a Drupal 8 site
Administering a Drupal 8 site
Extending Drupal 8
Extend your Drupal 8 site's functionality with contributed modules, or alter its appearance with contributed themes.
Contributed modules
Documentation for contributed modules for Drupal 8.
- Accelerated Mobile Pages (AMP)
- Access NASA API
- AddToAny Share Buttons
- Advanced CSS/JS Aggregation
- Alexa
- Allow a content type only once (Only One)
- Apigee Edge
- Apigee Monetization
- Apple News
- Astrology
- AudioField
- Avatar Kit
- Backup and Migrate
- Bamboo Twig
- Bibliography & Citation
- Block Style Plugins
- Blog
- Bootstrap Layouts
- Bootstrap Paragraphs
- Botman
- Boxout
- Braintree Cashier
- Brightcove Video Connect
- Business Rules
- Bynder
- CDEK API
- CKEditor CodeMirror
- CSV Importer
- CSV to Config
- Captcha Keypad
- Changed Fields API (8.x-3.x)
- Changed Fields API
- Chart Suite Guide
- Charts
- Chatbot API
- Cloud
- Color Field
- Commerce Affirm Credit Payment Gateway
- Commerce Authorize.Net
- Commerce Braintree
- Commerce Funds
- Commerce Google Tag Manager
- Commerce Inventory
- Commerce Migrate
- Commerce Pagseguro Transparente
- Commerce Postfinance
- Commerce Recurring Metered
- Commerce Rental
- Commerce Square Connect
- Commerce Tpay
- Conditional Fields
- Config Override Inspector
- Config Token
- Configuration Split
- Content Import
- Content Synchronization
- Content-Security-Policy
- Custom JS Module
- D8 Rules Essentials
- Decoupled Blocks: Vue.js
- Deploy - Content Staging
- Devel
- Developer portal
- Drupal Diversity & Inclusion
- Drupal Remote Dashboard
- Encrypt
- Entity Parser
- Entity Print
- Entity Reference Facet Link
- Entity Update
- Entity Usage
- Entity Usage Addons
- Entity browser
- Expire reset password link
- Extensions API
- External Entities
- Facebook Instant Articles
- Feature Toggle
- Features
- Filebrowser
- FillPDF
- FolderShare Guide
- Font Awesome Icons
- Form mode manager
- Formatter Suite Guide
- FortyTwo
- Freelinking
- General Data Protection Regulation
- Geolocation Field
- Get Linkedin Posts
- Give
- GovUK Notify
- GraphQL
- Group
- Group Media
- Gutenberg
- Guzzle REST Generator
- HTTP Client Manager
- Honeypot
- Human Presence Form Protection
- Insert
- Instagram Block
- Introduction
- JSON API
- Janrain Connect
- Key
- Keycloak OpenID Connect
- Konami Code
- Libraries API
- Lightweight Directory Access Protocol (LDAP)
- Link attributes
- Linkback
- Lndr
- Maestro
- Marketing Cloud
- Media: Acquia DAM
- Membership
- Message Thread
- Metatag
- Metatag Google Scholar
- Migrate Source CSV
- Modifiers
- Multiversion
- NASA Astronomy Picture of the Day
- OAuth2 Client
- One Time Password SMS
- OpenChurch
- OpenEDU
- OpenID Connect
- OwnTracks
- PHP filter
- Packages
- Paragraphs
- Parameter Message
- Paranoia
- Pathauto
- Permissions by Term
- Persistent Login
- Poll
- Popularity of modules
- Popup field group
- Potion
- Private Message
- Quadstat
- RELAXed Web Services
- RNG
- Reactify theme & module
- Recurring Dates Field
- Remote Stream Wrapper
- Responsive Class Field
- Role paywall
- Role paywall
- Rules API POST
- SMS Framework
- Salesforce Suite
- Schema.org Metatag
- Search API
- Search API Autocomplete
- Search API Exclude Entity
- Search API Federated Solr
- Search API Xunsearch
- Semantic Views
- Service Worker Registration
- Sharerich
- ShrinkTheWeb
- Simple FB Connect
- Simple Popup Blocks
- Simple XML sitemap
- Sitemap
- Skilling
- Snippet manager
- Social API
- Spectra Analytics
- Statistical Spam Filter
- Stop Administrator Login
- Summit Meeting List
- Superfish Drop-down Menus
- Superfish Drop-down Menus
- Swagger UI Field Formatter
- Switches
- TMGMT Capita
- Tealium iQ Tag Management
- Template Whisperer
- Toolshed
- Transaction
- Twig Components
- Twig Render This
- Twig Tools
- Twig tweak
- Twitter Tweets
- UI Patterns Pattern Lab
- Ubercart
- Uikit Slideshow
- Upload File History
- Video
- Views Add Button
- Views Bulk Operations (VBO)
- Views Reference Field
- Views Send
- Views Slideshow
- Views TimelineJS
- VisualN
- Web Page Archive
- Webform
- WissKI
- Wordcount
- Workflow
- Workspace
- XML-RPC
- YAML Content
- agGrid
Contributed themes
Drupal 8 contributed themes
Cron automated tasks
Configuring 'Cron' automated tasks for your Drupal 8 site.
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 8
'Clean URLs' in Drupal 8
Clean URLs are enabled by default, for improved search engine indexing, & cleaner 'user friendly' URLs.
Creating custom modules
This guide includes tutorials and other information that you need to create modules for Drupal 8.
- Getting Started - Background & Prerequisites (Drupal 8)
- Prepare a Module skeleton
- Naming and placing your Drupal 8 module
- Let Drupal 8 know about your module with an .info.yml file
- Add a composer.json file
- A "Hello World" Custom Page Module
- Adding a basic controller
- Add a routing file
- Add a menu link
- Going further
- Adding Custom Blocks to your custom Module
- Create a custom block
- Add a Form to the Block Configuration
- Process the Block Config Form
- Use Config in Block Display
- Add a Default Configuration
- Include default configuration in your Drupal 8 module
- Adding stylesheets (CSS) and JavaScript (JS) to a Drupal 8 module
- A practical guide to building basic Drupal 8 modules
- Basic structure
- Settings
- Theming
- Defining a Block
- Testing
- Defining and using your own configuration in Drupal 8
- Creating a custom Field
- Create a custom field type
- Create a custom field formatter
- Create a custom field widget
- Create a custom page
- Building a Views display style plugin for Drupal 8
Drupal 8 APIs
Drupal 8 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
- CKEditor 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 in Drupal 8
- 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
Managing site performance and scalability
Managing site performance and scalability in Drupal 8.
Mobile guide
Mobile guide for Drupal 8
Multilingual guide
Multilingual guide for Drupal 8.
PHPUnit in Drupal 8
Execute and write tests using Drupal's implementation of PHPUnit.
- PHPUnit file structure, namespace, and required metadata
- Running PHPUnit tests
- Running PHPUnit Javascript tests
- Running PHPUnit tests within PhpStorm
- Understanding PHPunit expectations
- Unit testing more complicated Drupal classes
- Using Prophecy
- Comparison with PHPUnit mocks
- PHPUnit Browser test tutorial
- Agile Unit Testing
- PHPUnit Javascript testing tutorial
- Running tests using PhantjomJS
Security in Drupal 8
Securing your Drupal 8 site.
Theming Drupal 8
How to work with a theme in Drupal 8.
- Defining a theme with an .info.yml file
- Drupal 8 Theme folder structure
- Adding Regions to a Theme
- Adding stylesheets (CSS) and JavaScript (JS) to a Drupal 8 theme
- Twig in Drupal 8
- Creating a Drupal 8 sub-theme, or sub-theme of sub-theme
- Using Classy 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 8
- 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
Upgrading to Drupal 8
Upgrading your site from Drupal 6 or 7 to Drupal 8
- Upgrading from Drupal 6 or 7 to Drupal 8
- Preparing an upgrade
- Prepare to upgrade: Learn key Drupal 8 concepts
- Prepare to upgrade: Choosing the approach
- Upgrading multilingual Drupal 6 to Drupal 8
- Upgrading multilingual Drupal 7 to Drupal 8
- Drupal 8 migrate modules
- Upgrade using web browser
- Upgrade using Drush
- Known issues when upgrading from Drupal 6 or 7 to Drupal 8
- Customize migrations when upgrading to Drupal 8
- Contributing to Migrate
Converting Drupal 7 modules to Drupal 8
This guide provides information and specific steps for upgrading contributed and custom modules from Drupal 7 to Drupal 8.
- 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 8 core structure and components.
Creating distributions
Developing Drupal 8 installation profiles and distributions.
Distributions
Documentation for Drupal 8 distributions.
Testing
The testing framework in Drupal 8 (Testing module, previously SimpleTest).
External Libraries in Core
Details about list of external PHP and JS libraries core depends on.
Umami: Drupal 8 demonstration installation profile
Sample Drupal site based on a fictional food magazine
Understanding Drupal version numbers
Understand Drupal’s version numbering scheme for Drupal core, and for contributed modules and themes, so that you know which version to use.
- Which version of Drupal core should I install?
- Which version of modules/themes/translations should I install?
- When is the next release?
- Which version of Drupal am I running?
- Which version of a module or theme am I running?
- What about upgrading and backwards compatibility?
- Drupal release versions
- Development snapshots
- What do version numbers mean on contributed modules and themes?
- What are alpha and beta releases, and release candidates?
- Release stable version