Customization of the Gestalt 2 CMS
From Gestaltipedia
The Gestalt 2 CMS toolkit is designed to be customized. That's why it's a toolkit and not a Blogging system or publishing system or other more hippy trippy marketdroid term. Its various components each have a specific level to which they are intended to be modified. These groups of components fall into the following groups:
Contents |
Philosophy
When Gestalt was first written, the idea behind it was to create a platform upon which projects for clients could be completed quickly. Part of the reason this approach can be successful is that there is a separation between that which is core and that which is custom. The core components are solid, consistent, predictable. You can make requests of them that will work all the time. They are a library of tools that are there to serve the underlying functions of the web site. They are the engine. Customization is ephemeral, superficial, one-off, and can be whatever is needed to get the job done. It's the paint job.
When a developer working with Gestalt makes an update to a core component, they are effectively making a change that will propagate through the entire future G2 installation ecology. With this in mind, then, it is important to remember that while you are free to modify any part of the system to your needs, sometimes a quick and dirty fix in a core file can have unexpected consequences in later projects. It's often easier to keep the line drawn nice and dark.
Of course, there are times when something absolutely has to be modified to suit, and in those cases you can of course do whatever the situation dictates. But, just remember, when working on core components, think about what you can do to change it in such a way that both the requirements of your current project are met, and the utility of all future projects which will use the component can be improved.
With that, let's outline where the line is drawn:
Core System
That which generally will stay the same on every G2 system. Generally, these won't get touched. Of course, in some cases (specifically datatypes, but also editing modules to a certain degree) there are exceptions. However the thing to keep in mind here is that these parts of the system are generic for a reason, and don't need to be modified to suit because they will fit into almost any kind of use case. These sections include:
Datatypes
Find Methods
Database Access Modules
Editing Tools
Authentication System
Privileges System
Caching System
Template System
Custom System: Page Templates
By far the simplest and most direct (and visible) way to customize a G2 site. Templates use HTML code with square brackets (e.g. [gestalt:block name]) to define areas of the page (e.g. containers that should be dynamic.
See main article: Page Templates
Custom System: Article Modules
For the technically inclined we have a modular system of add-ons that can format output from the system, make edits, bolt on third-party components, import and export data, etc. These live in the /article directory inside of /gestalt. See the Gestalt article module catalog for more information on a specific module.
