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

How does one change default concrete5 stuff without harming anything?

DON’T HACK THE CORE. You know this. I know this. concrete5 knows this too. In Drupal, we can override output functions by copying code into our template.php file and override core functions by either creating a custom module and tapping int the hook system or just by copying core modules into our /sites directory.

concrete5 has a nice approach to overrides. If you take a look at the file structure of a fresh concrete5 install at the top level you’ll see a bunch of empty directories and one directory with files in it named /concrete. This /concrete directory contains the concrete5 core.

concrete5-directory-structure-top-level.jpg

The /concrete core directory contains another set of directories with the exact same names as the empty directories at the level above.

concrete5-core-directory-structure-2012.jpg

If you copy a core file from a directory under /concrete to the corresponding directory at the top level your top level copy will override the core file. You might end up with more files for your overrides but in practice this approach can makes it easy to identify what has been overridden and why.

From concrete5 for Drupal Designers and Developers by Chris Hvizdak

Loading Conversation