The Gantry development team has been hard at work on Gantry 5.3 which will include a major update to the framework including a new inheritance system.
We're happy to say that this update is ready for testing, and is available in the Gantry downloads page under the CI Builds section. Keep in mind that this is a major update to Gantry and should not be applied to any production environments. There are known bugs, and changes are being added regularly as development continues.
What you can do is download it and the CI version of Hydrogen to get an idea of how the new inheritance system works, and assist in the bug discovery efforts by submitting any bugs you come across to GitHub.
Breakdown of Inheritance Levels
We will have complete documentation available upon Gantry 5.3's release explaining inheritance in detail, complete with video, stills, and animated GIFs. In the meantime, we will take a look at some of the new ways you can take advantage of inheritance in Gantry 5.3.
To get started, let's review the basic hierarchy of inheritance as it exists at the top level of Gantry 5. The Base Outline acts as the global default for any Gantry website. This is where global style, particle defaults, page settings, and layout options are set. The Base outline sets the default, and each outline below it either inherits or changes these settings.
The new Inheritance rules can apply to many different things. For example, you can inherit the following:
- One outline's entire layout to another.
- One section's attributes from one outline to another.
- One section's child items (particles) from one outline to another.
- One particle's attributes from one outline's layout to another.
- One particle's block settings from one outline to another.
- One atom's attributes from one outline to another.
Your site's style and particle defaults settings are naturally inherited from the Base outline, and are modified from a child outline's administration panels.
You can, if you choose, inherit an entire layout from one outline to another. This is useful if you would like to inherit multiple sections and/or particles from another outline, and do not want to have to recreate all of these items individually. Doing this will create inheritance on every section and particle. You can, of course, go through and disable inheritance and/or remove individual particles manually after setting it up.
You can set up inheritance for an individual section. You may do so as a clone, where everything is copied from another outline once, or as an active inheritance where the section and/or its items are synced continuously. You can choose to inherit/clones the section's settings, its children (particles and positions), or both.
Individual particles, including module positions and module instances, can be inherited as well. You can choose to clone or inherit a particle from another outline, including its block settings and/or attributes. This is especially useful if you have one particle that will remain consistent across multiple outlines - even if other particles in that section are not always exactly the same.
Atom inheritance works very similarly to particle inheritance. For example, if you have a Google Analytics code you want to have apply to multiple specific outlines, but not the Base Outline, you can do so easily through an atom's inheritance settings.
This is a brief look at some of the big changes coming to Gantry in 5.3. If you have any questions or thoughts please feel free to reach out through our Gitter chat. As always, thank you for being part of the Gantry community.