Understanding Drupal
This guide gives you a big picture overview of Drupal concepts, helping you to understand the framework behind Drupal.
System requirements
Detailed system requirements for a Drupal 7 installation.
Installing Drupal 7
How to install Drupal 7.
- Before installation
- Step 1: Download and extract Drupal
- Step 2: Create the database
- Step 3: Create settings.php and the files directory
- Step 4: Run the installation script
- Setting up the files directory
- Install Drupal in another language
- Built-in Installation Profiles
- OS specific download notes
- Using an installation profile
Updating Drupal 7
How to update your Drupal 7 site
Administering Drupal 7 site
Administering Drupal 7 site
Contributed modules
Documentation for contributed modules for Drupal 7.
- API module
- Accelerated Mobile Pages (AMP)
- Accessibility
- Accounting distribution
- Administration Views
- Advanced Views RSS Feed
- Advanced help
- Advanced help hint
- Affiliate-NG
- Album Photos
- Amazon Product Advertising API
- Amazon Wysiwyg
- Anonymous publishing
- Answers
- Attributions
- BACnet
- Backup and Migrate
- Bassets
- Bean
- Block in Block
- Brand
- Breeding API
- Brightcove Video Connect
- Bulk migrate taxonomy terms
- Bynder
- Bynder Orbit
- CDEK API
- CKEditor
- CKEditor LTS
- CRM Core
- Changed Fields API
- Charts
- CiviCRM Entity
- CiviCRM Starter Kit
- Cleaner
- Collapsiblock
- Comment mover
- Commerce Affirm Credit Payment Gateway
- Commerce Discount
- Commerce ECPay AllInOne
- Commerce Google Tag Manager
- Commerce Login and Pay with Amazon
- Commerce Point of Sale (POS)
- Commerce Square Connect
- Commerce TaxJar
- Conditional Fields
- Conditional Message
- CrowdRiff
- Customerror
- DAN Polaroid
- Devel
- Domain Access
- Drafty
- Drip Marketing Automation
- Drupal 8 upgrade evaluation
- Drupoint
- EU Cookie Compliance
- Email Field
- Entity Print
- Entity Share
- Entity Translation
- Entity Translation Copy
- Entity reference
- Epsilon Harmony Connector
- Extensions API
- Extra SiteInfo
- Features
- Feeds
- Feeds TD Fetcher
- Filebrowser
- FillPDF
- Fivestar
- Flag Notify
- Flexi access
- Freelinking
- General Data Protection Regulation
- Glossary
- GovCMS
- HTML2book
- Help Scout's Beacon
- Hiecor Secure Payment - Ubercart
- Human Presence Form Protection
- Image Replace
- Important Information block
- Instagram Block
- Invite
- Journal
- Key
- Lazy-load
- Libraries API
- LiftIgniter
- Lightweight Directory Access Protocol (LDAP)
- Link
- Link block titles
- Linkit
- LoginToboggan
- Mandrill
- Markdown Exporter
- Maxlength
- Media
- Media Fotoweb
- Media: Panopto
- Metatag
- Mime Mail
- Mobile App Updater
- Mobile Number
- Mother May I
- Multipage Navigation
- Name redactor
- Node noindex
- Notify
- Olark Chat
- OpenEDU
- Openlayers
- Organic Groups
- PHP Native password_hash for Drupal
- Panels Ajax Tabs
- Panels Ajax Tabs
- Panels Responsive Tabs
- Password Policy
- Phone field
- Progressive Web App (PWA)
- Protected node
- Quiz
- Quotes
- RBKmoney Checkout for Ubercart
- RabbitMQ
- Radioactivity
- Reference field option limit
- RegEx Field Validation
- Renderkit
- Revision Field Views
- Rules
- SMS Framework
- Salesforce Suite
- Salsify
- Schema.org Metatag
- Scrambler
- Search API
- Search API Federated Solr
- Search API Pages
- Semantic Connector modules
- Sharerich
- Sherpa Webform
- ShrinkTheWeb
- Simple FB Connect
- Simple Instagram feed
- Simple LinkedIn Autopost
- Siteimprove
- Snippets
- Spam Detect
- Style Switcher
- Swift Mailer
- Taxonomy List
- The Better Mega Menu
- ToDoist API
- Two-factor Authentication (TFA)
- Ubercart
- Ubercart Addresses
- Ultimate Cron
- Video
- Views
- Views Bootstrap
- Views Exposed Filters Summary
- Views FractionSlider
- Views Natural Sort
- Views PDF
- Views PHP
- Views Save
- Views Send
- Views Slideshow
- Visitors
- Voting Rules
- Web Service Data
- Willibald Panelstyle
- Wordfilter
- Workbench Access
- Workflow
- Wysiwyg
- Wysiwyg Boxout
- Wysiwyg Smart Paging SEO
- YAML Configuration
- bootstrap 4 based subtheme
- miniOrange OpenID Connect Rest API
Theming Drupal 7
Theming guide for Drupal 7.
- Overview of theme files
- Writing theme .info files
- Default .info values
- Assigning content to regions
- Checking if a region is occupied
- Theme settings
- Global settings
- Integration with the Color module
- Creating a sub-theme
- Clearing the theme cache
- Sub Theme - Inheritance Summary
- Example: creating a Garland sub-theme that utilizes the Color module
- Working with CSS
- Working with JavaScript and jQuery
- Using Newer Versions of jQuery
- Core templates
- Template (theme hook) suggestions
- Theming blocks
- Advanced theming
- Overriding themable output
- Creating accessible themes
- Theming HowTos
- Tools and best practices
- Upgrading 6.x themes to 7.x
Extending Drupal 7
Extend your Drupal 7 site's functionality with contributed modules, or alter its appearance with contributed themes.
Multilingual guide
Multilingual guide for Drupal 7.
Multisite Drupal 7
Drupal can serve many sites from a single codebase.
- Multi-site - Sharing the same code base
- Configuring a basic multi-site development environment in Linux
- Local multi-site installation of Drupal 7 on Linux
- Multi-site in subdirectories
- Multi-site on Linux - Configuring multi-site for a local user (UserDir)
- Multi-site on Linux
- Multi-site on Mac
- Multi-site on Windows - using IIS
- Multi-site on Windows - using WampServer
- Multi-site on Windows - using XAMPP
- Multi-site on Windows
- Multisite Mapping with Drupal
- Secure multi-site setup using shared code-base
- Some multi-site considerations
- Step 1: mono-site installation of Drupal 7
- Step 2: setting the databases
- Step 3: setting the subdirectories
- Step 4: setting the hostnames
- Step 5: troubleshooting
- Step 6: making your websites
- Step 7: backing up and restoring
Choosing a Drupal version
This guide explains Drupal’s version numbering scheme for both Drupal core and contributed modules.
Upgrade to Drupal 7
Upgrade to Drupal 7 from previous major versions of Drupal.
- Upgrade procedure (major version change)
- Version upgrade considerations
- Before you begin
- Make a test site
- Copy your live site to a test site (GUI)
- Copying your live site to a test site (command line)
- Upgrading Drupal core
- Read UPGRADE.txt
- Make an Upgrade Plan
- Current Site Preparation
- New Site Preparation
- Upgrade process
- Test the site
- Copy the test site to a live site
- Copy your test site to a live site (GUI)
- Copying your test site to your live site (command line)
- After Upgrade Checklist
- Upgrading Drupal rapidly using SSH/Shell commands
- Upgrading Drupal using a patch file
- Upgrading contributed modules and themes from Drupal 6 to Drupal 7
- Drupal 6 contributed modules that are in Drupal 7 core
- Migrating D6 Content Construction Kit (CCK) to D7 Fields
- Updating and upgrading Drupal core
Setting up cron
Setting up cron for Drupal 7
- Overview
- Configuring cron jobs using the cron command
- Running cron manually
- Multisite cron
- Troubleshooting cron
- Configuring cron without wget, lynx, or curl commands
- Configuring cron jobs with DreamHost
- Configuring cron jobs with MAMP localhost
- Configuring cron jobs with Mac OS X Server 10.5.x and later
- Configuring cron jobs with Media Temple Grid (gs) and DV servers
- Configuring cron jobs with Network Solutions
- Configuring cron jobs with Rackspace Cloud Sites
- Configuring cron jobs with Virtualmin and Webmin
- Configuring cron jobs with Windows
- Configuring cron jobs with cPanel
- Configuring cron jobs with hosteurope
- Configuring cron jobs with ixWebHosting
Configuring clean URLs
The guidelines for clean URLs
- Configure clean URLs
- Clean URLs with Apache 2 for performance
- Clean URLs with Apache 2 on Debian
- Clean URLs with Apache 2 on Ubuntu
- Clean URLs with Apache 2 - above DocumentRoot on virtual private servers
- Clean URLs with Hiawatha
- Clean URLs with IIS
- IIS CleanURLs using some of the available ISAPI filters.
- Clean URLs with Lighttpd
- Clean URLs with Mac OS X Server
- Clean URLs with WAMP
- Clean URLs with XAMPP
- Clean URLs in Wampserver 2
- Clean URLs with https for the backend and http for the front end
Migrating to Drupal 7
Migrating to Drupal
- Drupal modules equivalent to phpBB features
- Get started by creating a list
- How to migrate from many different forum systems
- Migrating from Discus
- Migrating from Invision Power Board
- Migrating from Joomla/Mambo
- Migrating from Wordpress
- Migrating from phpBB
- Migrating from static HTMLs with i18n
- Migrating from vBulletin
- Migrating to Drupal
- phpBB integration solution
- phpBB migration solution
Security in Drupal 7
Securing Drupal 7 site
Backing up and migrating a site
Backing up and migrating a site (for example, from one host to another).
Managing site performance and scalability
Managing site performance requires a mix of code optimisation, configuration, and server tuning.
- Planning for Performance
- Caching to improve performance
- Changing PHP memory limits
- Content Delivery Network [CDN]
- Design for Low Bandwidth
- Increase upload size in your php.ini
- Optimizing Drupal to load faster (Server, MySQL, caching, theming, HTML)
- Optimizing MySQL
- Randomizing MySQL Users For Exceeded max_questions Error
- Server tuning considerations
- Tuning php.ini for Drupal
Managing users
How to add and remove Drupal users and manage other user related functionality like roles, permissions, and fields.
- User Roles
- Managing access control with permissions and user roles
- Assigning permissions and users to roles
- Ban an IP address
- Enabling user pictures (avatars)
- Extending user profiles
- Hide user login
- HowTo Create a 'country' profile field
- Viewing unpublished content
- Working with user profile information
Monitoring a site
Monitoring a site
Nodes, content types and fields
Nodes, content types and fields
Organizing content with taxonomy
Organizing content with taxonomy
Site building best practices
Site building best practices
Accessibility
Accessibility tools and best practices
Guidelines for SQL
These guidelines provide some tips for writing efficient SQL code. Guidelines apply to MySQL and PostgreSQL.
- Install tools to measure performance of SQL queries
- Logging slow SQL queries server-side in PostgreSQL
- The Benefits of Indexing Large MySQL Tables
- Run EXPLAIN on slow queries to find sequential scans
- Using MySQL EXPLAIN
- Using PostgreSQL EXPLAIN
- Understanding the logic behind EXPLAIN ANALYSE
- Indexes are not symmetric
- Make sure that JOIN columns both carry indexes of the same type
- Conclusion and summary of the guidelines
- Writing code compliant with both MySQL and PostgreSQL
Mobile guide
Mobile guide for Drupal 7.
Working with menus
Managing Drupal menus, menu links, and custom menu settings and options.
Creating custom modules
Module developer's guide for Drupal 7.
- Getting started
- Telling Drupal about your module
- Writing module .info files (Drupal 7.x)
- Creating Drupal 7 hooks
- Writing comments and implementing your first hook
- Writing .install files (Drupal 7.x)
- Declaring the block
- Retrieving data
- Generating block content
- Testing and troubleshooting the module
- Preparing for a module configuration form
- Creating the configuration form
- Validating the data
- Specifying a custom permission for a new page
- Adapting the query
- Theming the page
- Adding a 'More' link
- Testing with SimpleTest
- Practicing patches
- Show all errors while developing
- Drupal 7's code registry
- Exportable configuration
- Suppress caching (for development) or to use an external page cache
- Using the theme layer (Drupal 7.x)
- Drupal 6/7 programming from an object-oriented perspective
- Making your custom data translatable
- Module development HowTos
- Understanding the hook system for Drupal modules
- Working with multilingual content
Contributed themes
Documentation for Drupal 7 contributed themes.
- 0 Zilch
- Adaptivetheme
- Andromeda
- Business
- Circle
- Danland Theme Handbook
- Elimai
- FontFolio
- Fusion
- Groundwork
- LayoutStudio
- Marinelli
- Mayo
- Mix and Match
- Mothership
- Neptune
- Newswire
- Nucleus
- Omega
- Photo
- RootCandy
- Sasson
- Splendio
- Square Grid
- UIkit
- Willibald
- Zen
- Zentropy
- Zero Point & Black Hole
- Zurb Foundation
Converting Drupal 6 modules to Drupal 7
Converting Drupal 6 modules to Drupal 7.
Creating distributions
Developing installation profiles and distributions for Drupal 7.
Distributions
Documentation for various Drupal 7 distributions.
Drupal 7 APIs
How to use built-in Drupal core APIs like caching, javascript, entity, form as well as others.
Core
Drupal 7 core structure and components.
HowTos
Site building and development HowTos for Drupal 7.
- HowTos
- Add PHP code to the body of a Drupal 7 Block
- Accessing commerce order data from the send mail Rules action
- Add Google Webmasters Tools verification meta tag via the themes template.php file.
- Add a markup element to a Views Exposed Filter form
- Adding File Encryption to existing Drupal 7 site
- Book: Drupal 7 the Essentials
- Build a Drupal 7 HTML5 Video Subtitling/Closed-captioning System
- Build a simple conditional field in Views 7.x-3.x
- CTools Plugins without Panels, step by step
- Cascading select using views
- Change default strings (text) without using full translation system
- Control/modify display settings (author and date) on posts
- Copy the form buttons on node creation pages to the top
- Create a Node in Code
- Create a Rule to Evaluate If a Logged-in User Has Created Content of Type X
- Create a custom User Registration form with FAPI D7
- Create a fixed position customized information box
- Creating an activity newspaper website using D7
- Creating iFrame-ready Widgets with Views and Templates
- Customize the default user registration form
- Display User's Points of Specific Category in a Block on Content Profile
- Embed a date-specific event calendar
- FAQ using Views
- Flot Usage Example
- Future-proof your Drupal 7 site
- How to Create an Image Gallery in Drupal
- How to Make a Simple Module with a Form and Menu Link
- How to reset the administrator (user 1) password in Drupal 7
- How to Set up Google AdSense for Search without using a custom module
- How to add jQuery UI libraries to a page
- Image gallery with Imagefield and Taxonomy
- Making a Guestbook, a Gallery, a Status Wall, Chat Room ...
- Move field's help text (description) between the label and input element(s)
- Moving node settings on the edit form
- Subscribe a user to specific OG group using Rules
- Writing a module that handles node access
- Yin/Yang Multisite Staging
Automated testing for Drupal 7
The testing framework in Drupal 7 (Testing module, previously SimpleTest).
- Testing overview
- Testing module
- Testing tutorial
- Unit Testing with SimpleTest
- Organizing your test cases
- Selenium testing
- Testing setup and configuration
- Writing upgrade path tests
- Run tests
- Running tests through command-line
- Troubleshooting tests
- SimpleTest upload tests hanging
- SimpleTest [Browser] on Vista
- Improving SimpleTest performance
- Testing Reference
- API functions
- Assertions
- Why test
- Core tests
- Hidden modules and themes
- Comprehensive example
- Miscellaneous SimpleTest tips