Updated in 2023 - for Moodle 4

If you are interested in continuing in Moodle Theme development, and have some development experience, experience with php, and experience with Moodle Themes, then this MoodleBites Theme Design Level 2 is for you!  You should have completed, or be familiar with the content of MoodleBites Theme Design Level 1 before taking this advanced course.

This course is 3 weeks in duration, asynchronous, and completely online. Each week contains approximately 2-4 hours work, although this varies depending on your experience with Moodle and themes in general, and how much extension work you wish to complete.

The course is focused on adapting existing Themes (standard Themes and plugin Themes). After successfully completing this course:

  • You will understand how Moodle Themes really work.
  • You will be able to customise existing Themes.
  • You will be able to use simple debugging tools and understand important aspects of the Moodle Theme development and testing process.

There are no live sessions, but participants are encouraged to participate in forums and to share their practical work for others to see and learn from.  Note that for this course you should be using Moodle 4.x or later.

MoodleBites Theme Design


Gareth Barnard photo 2022Your lead-facilitator for this course is Gareth Barnard, well-known in the Moodle community for his outstanding contributions to Moodle including:

  • Co-Moderator of the Moodle.org Themes Forum
  • Co-Moderator of the Moodle.org Courses and Course formats Forum
Current work:
  • Developer of the revolutionary Foundation theme (used on 800+ sites)
  • Current developer of Adaptable theme (used on 19,700+ sites)
  • Co-Developer of Campus Theme (used on 600+ sites)
  • Developer of Collapsed Topics course format plugin (used on 6,000+ sites)
  • Current developer of Grid course format plugin (used on 7,200+ sites)
  • Current developer of Theme Selector Block (great for developers/demo sites)
  • Developer of SynHi, a syntax highlighting filter (great for presenting code on courses)
  • Previous work:
  • Maintainer of the Essential Theme - THE most popular Moodle Theme plugin anywhere – still used on more than 3,600 Moodle sites worldwide
  • Developer of Shoehorn Theme - based on Bootstrap 3
  • Developer of Shoelace Theme
  • Developer of Columns format course format plugin (used on 70 sites)


This is a specialist course, with limited numbers, and starts on:

  • 1st March
  • 1st July
  • 1st November


Note that if you book Level 1 and Level 2 at the same time you can get an additional US$100 discount!

MoodleBites Theme Design Level 2 is US$499 per person. At this time we are able to offer a discount to a special rate of US$399 but places are limited - so book early to avoid disappointment! If you wish to translate this value to your local currency please visit: http://www.xe.com/ All invoices are in US Dollars (Euro invoices available by special request). You can register for the course using the "Register Now" link on the Front Page.

This is a technical course, designed for highly self-motivated people, willing to complete work outside of the course content.

Technical requirements and pre-requisites

    Knowledge you will need:

    • A basic working knowledge of Moodle administration and how to install plugins.
    • A knowledge and permissions to install software on your computer.
    • Ability to problem solve with a 'no fear' attitude when facing new complex technical concepts.
    • Access to a test server with Moodle installed or can be installed upon.
    • An understanding of how to manage and edit files on your operating system.
    • Familiarity of using browser development tools.
    • Fully versed with an IDE or code editing text editor you are using.
    • The ability to compress a collection of files and folders into a 'ZIP' or 'TAR' file.
    • Understanding or appreciation of PHP, jQuery / JavaScripts, SCSS* and CSS.  *Helps but not essential.
    • Willing to use the command line.

    • A computer running Windows, macOS or Linux that you have administrator permissions on.
    • Access to the Internet on that computer.
    • Familiarity with a Unicode text editor or integrated development environment (IDE) that works with UTF-8 and does not introduce the 'Byte Order Mark' or BOM, see 'UTF8 and BOM' and 'Byte order mark'.  Such editors are:

    Such IDE's are:

    Note: Unfortunately we are not able to provide detailed support on every different platform.

    Course outline

    In this course you will learn aspects of advanced Moodle Theme design including:

    • Week 1
      • Course preparation - have a test server and clone a starter theme.
      • Configuration management with Git - so we can manage our code and the enhancements you will write.
      • Using SCSS.
      • Mustache templates in detail.
    • Week 2
      • Applying accessibility.
      • Creating and using custom settings.
      • Maintenance and planning for change with refactoring.
    • Week 3
      • How to display blocks horizontally.
      • Creating and using JavaScript as AMD modules.
      • Adding PHPUnit tests.

    We will be teaching the skills of:

    • Adding PHPUnit tests - skill of checking and confirming the work.
    • Applying accessibility - skill of making the interface available for all.
    • Configuration management with Git - skill of managing the work.
    • Creating and using JavaScript as AMD modules - skill of manipulating the browser with JavaScript, possibly covering the AJAX concept.
    • Creating and using custom settings - skill of adapting existing API functionality to suit a requirement.
    • How to display blocks horizontally - skill of adapting existing methods to suit a requirement.
    • Maintenance and planning for change with refactoring - skill of maintaining a project for one or more stakeholders.
    • Templates - skill of templating and separation of the logic from the interface.
    • Using SCSS - skill of organising the styles.

    *Please note this course outline is subject to change to keep pace with Moodle development.