Skip to content

Creating a Custom Child Theme in Moodle 2.6

I’m spending a fair amount of my time now working on and supporting a medium-sized Moodle installation. I will not sugar coat it: Moodle is far from my favourite piece of web software — its considerable UI complexity being my chief complaint — but it does do a reasonable job and it has a rich enough feature set to make it quite an asset in the education world.

This complexity to Moodle sometimes doesn’t exactly make it easy to do the right thing as a developer, and working with themes could be somewhere where developers diverge from best practices. The temptation to clone your favourite theme just to make a few tweaks here and there leaves people unable to track changes to the base theme, and keep their site up-to-date.

So, I have put together a video showing how you can create a custom theme (a child theme in WordPress parlance) that inherits mostly from your base theme, but allows you to override CSS and even bits of the HTML structure of Moodle’s generated pages.

I think it’s actually an easier process than people think!

As always, I welcome feedback, and if you found this particularly helpful, I’m always happy to have a few pennies drop into the PayPal account!

Find this tutorial useful?





Like this post?

If you would like to support the time and effort I have put into my tutorials and writing, please consider making a donation.

3 Comments

  1. Joseph wrote:

    Very very useful stuff here Peter. Thank you for this tutorial I am using it immediately.

    Saturday, October 17, 2015 at 21:19 | Permalink |
  2. Justin Hunt wrote:

    Great tutorial Peter. Very clear.

    Monday, January 18, 2016 at 12:40 | Permalink |
  3. Ahmad wrote:

    Thanks Peter.
    I tried to use these steps to clone a lambda theme but unfortunately the child theme did not appear in the Theme selector. Can you help me please?

    Wednesday, March 22, 2017 at 05:40 | Permalink |

Post a Comment

On some sites, you must be logged in to post a comment. This is not the case on this site.
Your email address is not made public or shared. Required fields are marked with *.
*
*
*

Posting a comment signifies you accept the privacy policy.
Please note — your comment will not appear straight away, as all comments are held for approval.