Check your version
This collection covers a topic in Drupal 7 which may or may not be the version you're using. We're keeping this tutorial online as a courtesy to users of Drupal 7, but we consider it archived.
This collection of hands-on exercises will have you create a movie review site using Drupal. It begins with building the basic structure of the site using Drupal core and contributed modules, like Panels, in exercises 1–11. After the site is built the exercises move to theming the site using the Zen base theme (exercises 12–16). The remaining exercises, 17–36, build a custom module to finish up a variety of features on the site.
These are exercises meant for you to use to test your Drupal knowledge with a simple project that requires a broad knowledge of site building, including coding. Note that this series is not intended to teach you, it is intended as a practice project. You should already know how to build a Drupal site before beginning this series of exercises.
The project has customer requirements presented through the included wireframes and directions within each exercise. The exercises also have a list of resources and tutorials to help you refresh your knowledge of the topics and skills you will need to accomplish each task. Note that learning resources for Drupal 7 have been provided, but the exercises can also work with Drupal 8 if you are willing to work with development versions for some of the contributed modules required, and skip/replace the Webform task (as this has not been ported to Drupal 8 yet).
Download the project wireframes for reference.
These exercises are the work of Damian Robinson, who has graciously licensed them under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). Drupalize.Me has made minor edits to his original work and you can find a copy of the complete originals for download on his website. We're thankful for Damian's time and energy to create these materials, and his willingness to share them openly to support the Drupal community.
This exercise will have you demonstrate knowledge of the installation process and how to customize Drupal for an improved experience when using the administration UI.
This exercise requires you to analyze wireframes detailing the architecture of a website and design a content type to store all the required information.
In this exercise you will demonstrate the ability to build a ‘Movie Review’ content type based on our design by downloading contributed modules to provide all the necessary field types.
This exercise will require you to build a view which lists films filtered by genre and create image styles to format images for different purposes.
In this exercise you will demonstrate more advanced Views skills by building a view with a relationship between content and taxonomy and formatting the output using a table.
In this exercise you will demonstrate knowledge of Panels, and create a layout for the Top Ten List page, and create and configure content within Panel Panes.
In this exercise you will build and position quicktabs within a panel page.
In this exercise you will create and position menus, static pages, and webforms, which can be accessed via the menu.
In this exercise you will combine knowledge of Panels and Views to create a complex page layout.
In this exercise you will create URL aliases for all content, and create user roles to allow logged-in users to create content.
In this exercise you will demonstrate knowledge of core search by enabling site search, configuring the search display to format the content, and indexing the content.
In this exercise you will demonstrate your ability to create a custom theme as a subtheme based on Zen and use Sass.
This exercise will have you demonstrate an understanding of Drupal themes and how to develop CSS to theme the default markup created by Drupal, with particular reference to CSS naming conventions.
In this exercise you will demonstrate that you understand the CSS patterns used for smaller elements of Drupal such as fields, and can create selectors which override them appropriately. You will also override template files to create your own markup and suggest new template files.
In this exercise you will demonstrate that you understand the concept of responsive CSS and the methods which can be used to implement it in a Drupal theme.
Create a custom module and alter the content on a node page using a hook and existing theme functions.
Identify and use preprocessors by creating a custom breadcrumb trail on a page, and reduce and refactor code in custom modules.
Create a new module for movie imports, which will display a form when the user navigates to a page.
Make SQL queries in Drupal, make HTTP requests to external websites, and use this data to validate a form.
Use a form submit hook to pass information down the form API and create a node programmatically.
Create an image file programmatically and attach a file to a node.
Check and create taxonomy terms programmatically.
Create an install hook to pre-define a list of films to import.
Create a custom Drush command, which makes use of re-usable functions within our Movie Import module.
Create an administration form to save information about how the movie importer works by using variables.
Create a permissions hook to secure access to pages within Drupal.
Learn how to use Features to manage configuration changes and understand the configuration change workflow in a team environment.
Manage text formats and filters and add a WYSIWYG editor.
Configure basic settings which affect performance, and perform basic analysis to understand what might be affecting website performance.
Use hooks to update the database tables and alter form elements.
Create autocomplete fields and menu hooks.
Add user data to the database from an existing form.
Display custom content using a render array.
Render content which can be refreshed via Ajax.
Create a custom block with details from the database containing information about user preferences.