How to copy the Elemental theme to use as a base for new themes

This is a community-contributed tutorial. This tutorial is over a year old and may not apply to your version of Concrete CMS.
Apr 3, 2015

Here are the steps required to copy the Elemental theme to create a new theme called Test.

1. copy the elemental folder from the core themes directory into the application directory

copy from:
concrete\themes\

copy to:
application\themes\

2. rename the "elemental" folder to "test"

the theme folder name:
- must be lowercase
- cannot use spaces
- cannot use hyphens
- underscores can be used to separate words
Example:
my_theme

3. go to the Pages & Themes area in the dashboard

4. first error:

An unexpected error occurred. 
Cannot redeclare class Concrete\Theme\Elemental\PageTheme

5. first error fix: in page_theme.php

find:

namespace Concrete\Theme\Elemental;

change to:

namespace Application\Theme\Test;

when using folder names with underscores
- the underscore must be removed and replaced with CamelCase formatting
Example:
folder name: my_theme

namespace Application\Theme\MyTheme;

6. in your Test theme directory
version 5.7.4.2 or earlier
- open description.txt
- change "Elemental" to "Test"

if the folder was named my_theme
- change "Elemental" to "My Theme"

version 5.7.5 or later
- open page_theme.php
- look for getThemeName()

public function getThemeName()
{
    return t('Elemental');
}

change "Elemental" to "Test"

public function getThemeName()
{
    return t('Test');
}

7. install the Test theme

8. activate the Test theme

9. return to website

10. second error:

An unexpected error occurred.
File `../../../css/build/core/include/mixins.less` not found. in main.less

11. second error fix: in main.less (application\themes\test\css\main.less)

find:

@import "../../../css/build/core/include/mixins.less";

change to:

@import "../../../../concrete/css/build/core/include/mixins.less";

12. return to website

13. the site works and is now using a copy of Elemental called Test

Recent Tutorials
How to Automate the Copyright Year
Dec 27, 2024

Learn how to keep your website's copyright year updated automatically in Concrete CMS.

How to change the path of a group of pages
Dec 23, 2024
By myq.

Change the canonical path without breaking things

Bi-directional Express associations
Dec 18, 2024
By myq.

Set up associations between Express entries in both directions

Display Express Data Across Multiple Sites
Dec 17, 2024
By myq.

A guide to configuring Express entities and the Express Entry List block to ensure proper data display across multiple sites.

Customize locale icons
Oct 29, 2024
By myq.

How to customize locale (language region) flags

Concrete CMS Caching Guide
Oct 16, 2024

An overview of types of caching in Concrete and considerations when using them.

Improvements?

Let us know by posting here.