Development tools
Commonly used tools to aid in Drupal development
Using Composer
Learn how to use Composer to manage Drupal projects and their dependencies.
- Using Composer in a Drupal project
- Composer in relation to Drush Make
- Using Composer to Install Drupal and Manage Dependencies
- Add a composer.json file
- Starting a Site Using Drupal Composer Project Templates
- Managing dependencies for a contributed project
- Managing dependencies for a custom project
- Preparing your site for Composer 2
- Tricks for using Composer in local development
- Troubleshooting Composer
- Using Drupal's Composer Scaffold
- Using packages.drupal.org
- Using the Lenient Composer Plugin
Git version control system
How to install and use Git for version control in Drupal projects
Managing a drupal.org theme, module, or distribution project
Information on how to create and manage a module, theme, or distribution project hosted on drupal.org
Security
Best practices for secure sites and code.
Drupal project issues
All about how the Drupal project uses "issues" to keep track of bugs and feature requests
Local server setup
Local server setup for Drupal.
- Docker-based development environments
- Linux development environments
- Mac OS development environment
- Windows development environments
- Managing Mail Handling for Development or Testing
- How to create a test site
- Easy installation of a local development server using Drush and Aegir-up
- Docker with Solr Cloud Integration
Usability testing
Guidelines for conducting and recording usability tests and communicating their results. Also, the findings of previous tests.
Coding standards
The Drupal Coding Standards apply to code within Drupal and its contributed modules.
Profiling Drupal
Benchmarking and profiling Drupal.
User interface standards
User Interface standards for Drupal.
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
- Using Single-Directory Components
- 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
- Update the throbber
- Z-indexes in Drupal 8
- Add meta description and title programmatically
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
- 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
- Access Policy API
- AJAX API
- Authentication API
- Batch API
- Block API
- Cache API
- (deprecated) CKEditor 4 API
- CKEditor 5 API
- Configuration API
- Database API
- Entity API
- Filter API
- Form API
- JavaScript API
- Layout API
- Logging API
- Menu API
- Middleware API
- Migrate API
- Plugin 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
- Icon API
Automated testing
The testing framework in Drupal (Testing module, previously SimpleTest).
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.
Mobile Drupal sites
Mobile guide for Drupal 8
Decoupled Drupal
Provide content to decoupled front-ends that are responsible for presenting or displaying content.