This is the documentation for concrete5 version 5.6 and earlier. View Current Documentation

And finally...

  1. We'd appreciate it if your theme included "Built with concrete5 CMS" with CMS linking to and an alt tag with "concrete5 content management system". You're not obligated to do this, and you definitely shouldn't strip out any original attribution (if you're converting a theme that's been created by someone else), but we'd appreciate it.
  2. Submit your finished theme here!

This is a guide to those who've created their own concrete5 theme, and would like to submit it to the marketplace. If you need instructions on how to create a theme for the first time, you can find them here.


  1. Your theme must install properly.
  2. Your theme must be fully compatible with the minimum version of concrete5 as specified in your package controller. If your controller says your theme works with concrete5.3.3, please verify that it actually does-- before PRB members spend time testing it.
  3. Your theme must be coded cleanly and utilize reasonably modern web standards. "Old school" approaches like inline styles, table-based layouts and the use of deprecated elements should be avoided if at all possible. A poorly coded theme reflects well upon neither the developer nor the marketplace.
  4. Your theme's outer package folder must contain a graphic named icon.png, properly sized to 97x97 with rounded corners like the others in the marketplace, that reflects what your theme looks like.  Here's a photoshop marketplace icon template for helping you make icons with round corners.
  5. Your theme's folder must include a graphic named thumbnail.png, properly sized to 120x90. This must be a screenshot that accurately depicts your theme.
  6. Your theme must contain description.txt with a proper title on the first line, and brief description on the second. Please proofread your theme. Currently these should all be in English (although that will eventually not be a requirement.)
  7. If the theme contains a text label at the top (which is typically the name of the theme) this should be changed to be the name of the site, which is grabbed via the 'SITE' php constant.
  8. Your package, all of its blocks & themes, must have unique file and class handles. This is to help sure that all of concrete5's addons will work well together.  To keep them unique, please append your username to the start of handles, such as tony_wood_design for a package's file name and TonyWoodDesignPackage for a package's classname.  This unique username prefix should also apply to any tables and blocks your package needs.
  9. Your theme's outer directory should include no spaces, no capital letters, and no dashes. Only underscores are allowed. The name of this directory should be the name of your theme, only with no capitalization, and underscores instead of spaces. (e.g. If your theme is "A Beautiful Day" your directory should be "a_beautiful_day", not "beautiful_day" or "beautiful-day."
  10. Your theme must contain "Loader::element('header_required');" in the page header, and "Loader::element('footer_required');" immediately before the close of the body tag.
  11. When the concrete5 editing bar and controls are included your page, they must appear as they normally do. Your theme's styles cannot cannot be greedy and change the look of the concrete5 buttons, tabs, or other controls. This means making sure your styles aren't too greedy, trying not to use a:visited, a:link (instead, just use "a"), and wherever possible trying to avoid the CSS * selector. Click here for some more helpful tips.
  12. Your theme must have a default.php and view.php.
  13. Your theme must contain a typography.css file, which houses the text styles that are useful both on the front-end of your site and in the rich text editor. This will allow the rich text editor to automatically pick up the important styles for your theme, and display them correctly.
  14. Your page types must contain a "Main" area. This should map to the template's main content area.
  15. Page types must include no more than 24 areas. While we want to give designers the freedom they need to execute their designs, we also must make sure your theme will perform reasonably well in average hosting environments-- creating tons of uneccessary areas should be avoided.
  16. Font Licensing: 
    When including fonts with your theme, you must have a copy of the font license in a .txt file  in the top level directory for the theme. Include a URL to the source of the font and any other relevant information in the license text file. 


  1. Your theme should contain at least two or three templates. Examples of preferred template names: full.php, left_sidebar.php, right_sidebar.php, two_column.php, three_column.php.
  2. You should use the following area name when adding additional editable areas to your templates (when you've used these, feel free to use additional custom area names.)
    • Sidebar
    • Header Nav
    • Header
    • Footer
  3. At least three styles of your theme should be editable through the CSS customizer. This requires changing how your CSS files are referenced, and placing some CSS comments around certain bits of your stylesheets. Learn how to setup your themes for customization here.
  4. If you are adding a new page type, be sure to check that the page type does not exist already before installing:
Loading Conversation