Craft CMS Tutorials

Top-notch resources to help you learn Craft quickly and accurately.

Video Courses

Professional video courses on Craft to help you learn faster.

Twig Templates in Craft

This is a beginner course that teaches the basics of using Twig in Craft. If you took the Learning Craft course, this course will help you get even better at building sites with Craft. The goal is to get over the hump of writing Twig code, dispel any myth that using Twig is difficult, and help you take the next step in using Craft.

Get the course


Control Flow in Twig

In this course we will learn the fundamentals of control flow in Twig. We’ll learn what’s available to us to more carefully control how and when content is outputted in our Twig templates.

Get the course


Flexible Twig Templates in Craft

In this intermediate level course, Ryan teaches the Flexible Template Stack, an approach put together by developer Anthony Colangelo. The Flexible Template Stack in Twig and Craft allows you to have reusable templates that can render content from any section of the site. This is a setup you can use over and over again on your Craft-powered projects.

Get the course


Craft Plugin Development Workbook

A hands-on tutorial that will help you build a real-world Craft plugin to track all user visits to your site. It is a follow-up to the Craft Plugin Development Video Course, which is a prerequisite, as is familiarity with the Entry Count Plugin.

Get the course


Fundamentals of Craft Commerce

In this course we’ll cover how to install and configure Craft Commerce, how to use it to build a store for physical products, all the while learning some best practices along the way. By the end of this course you will be ready to implement you first e-commerce website using Craft Commerce. We work on this together and I’ll be here each step of the way.

Get the course


Free, focused lessons on Craft.

Creating an Element API in Craft

Build a JSON API for your Craft-powered website using the Element API plugin from Pixel & Tonic.

Watch the Lesson


Installing Craft CMS

In this excerpt from Up and Running with Craft, we step through how to prepare for and install the Craft CMS.

Watch the Lesson

Remote Asset Sources in Craft

We set up and configure both Google Cloud Storage and Amazon s3 so we can upload and serve assets remotely in Craft.

Watch the Lesson

Contact Form in Craft CMS

In this lesson we use the first-party Contact Form plugin to create a simple contact form in the Craft CMS.

Watch the Lesson

Plugins in Craft 3

A look at how you can make your Craft plugins work in Craft 3 Developer Preview.

Watch the Lesson

Changing Section Labels in Craft

Ryan walks through how we can use translations in Craft to change the name of Singles to Pages and Structures to Nested Pages.

Watch the Lesson

Overview of Craft 3 (beta)

A short overview of the new features in Craft 3 (beta).

Watch the Lesson

Installing Composer

Installing Craft 3 beta requires Composer. This video will cover how to install Composer for use in Craft 3 (and anything else, really).

Watch the Lesson

Installing Craft 3 (beta)

A short lesson on how to install Craft 3 beta.

Watch the Lesson

Updating Craft 3 Beta

In this lesson Ryan shows how to use Composer to update Craft 3 Beta to the latest release.

Watch the Lesson

Upgrading Craft 2 to Craft 3

Ryan steps through how to upgrade a Craft 2 site to Craft 3.

Watch the Lesson

Yii Debug Toolbar in Craft CMS 3

How to enable and use the Yii Debug Toolbar in Craft CMS 3.

Watch the Lesson

Image Editing in Craft 3

Ryan takes a quick look at the new image editor in Craft 3.

Watch the Lesson

Craft How-to Articles

Helpful how-to articles on Craft CMS and Twig.

Filters in Twig and Craft

Filters in Twig and Craft allow you to alter the contents of a variable. This could be a variable you set right in the template or one that is part of the data output provided by Craft (like when retrieving and looping through section entries).

Using Categories in Craft CMS

We work on the Crafty Brewery site and use categories to assign beer styles to our recipes.

Using Variables in Twig and Craft CMS

The basics of setting and using Twig variables right in your Craft CMS templates.

Where am I in the Twig Loop?

Twig offers special `loop` variables that makes it easy to know which iteration of the `for`-loop, for example, we are on. This allows us to do different styling, markup, or other condition-based things. Let's learn the different variables and how we can use them in Twig and Craft.

Key Value Arrays in Twig

In Twig, key value pairs are called hashes and they are a handy way to store data right in your templates. In this tutorial we'll learn the basics about Twig hashes and then iterate over one to create a website navigation.

Three Twig Tag Types in Craft CMS Explained

Templating in Craft using Twig can, at first, be a little confusing. If you, like me, come from other systems that have a proprietary template tag system, then it might take a little time to wrap your head around how Craft and Twig work. But once we learn about the different types of tags things will be clearer and you'll discover the power of using Twig in Craft. This tutorial will give you the direction and guidance you need to get started.

Using Macros in Twig and Craft

Macros are the Twig version of functions. Just like you would write a function in PHP to do something and return something, you can use a Twig macro to generate some output. Macros are used for generating often used markup that might vary slightly each time. You put your skeleton markup in the macro and use parameters passed in to alter that markup and then output it. This tutorial covers how to generate modifiable markup using Twig's macros.

Brief Overview of Craft Routing to Templates

When things go wrong, it's good to know how things work. It makes us better troubleshooters. This tutorial covers how Craft routes to templates when there are no other matches.

Creating an Age Drop-down with Twig range()

How to use Twig in a more "programmy" way than just having it output your CMS content for you. This tutorial walks you through the steps to create an age drop-down using Twig's range() function. You can do this tutorial in Craft or any CMS that supports Twig.

Getting Started with Craft Plugin Development with Ben Croker

This is a part of an interview with Craft Plugin Development course author Ben Croker. Ben had a lot of great stuff to share about how he got started developing add-ons and more; this is the first part.

3 Things to Know About Craft Plugin Development

Ben Croker covers three things you should know about Craft plugin development.

Inspiration for Your First Craft Plugin

Author Ben Croker offers up some links and thoughts to inspire you to start creating your first Craft plugin.

Craft Plugins in Craft 3

In the short video Ben walks through the changes he needs to make to the Entry Count plugin (that's the plugin he builds in the course) so it will work with Craft 3.

Craft Podcasts/Audio

Recorded conversations about Craft.

Craft with Stephen Lewis

This episode is all about the Craft CMS by Pixel & Tonic. I’m joined by Stephen Lewis of Experience, a web development consultancy based in Cardiff, Wales. Stephen is the maintainer of the Craft Cookbook and has worked creating add-ons for Craft for his client work. He also regularly blogs and writes about web development, including Craft.

What are our customers saying?

"Just purchased your Flexible Twig course. Love it!"
Tyler Morrison
"Been enjoying @mijingo 's Learning Craft video tutorials. Feeling like I've got a good basic understanding of #craftcms Very impressive"
Laura Montgomery
"I bought your Craft Starter Pack a year and a half ago. Worth every dollar. In fact, I would've paid twice as much for it, because you saved me so much time."
Timothy Ingram
"Ben's knowledge of Craft combined with his relaxed and informal teaching style makes for a great learning experience."
Steve Abraham
"Ben puts a lot of thought into his teaching approach and has the ability to explain complex concepts in a way that just make sense"
Gareth Redfern
"Ben is great at taking a complex subject and breaking it down in a way that you can wrap your mind around. I thought that plugin development was something I would never understand, and happily Ben proved me wrong!"
Jonathan Melville
"I really appreciate all the videos and writing you have done. Your work has given me a jump start on my front end development business."
Shan Ricciardi