Skip to content

Extending Nebula

Nebula is extended the Magento way, through DI, plugins, layout XML and templates, plus one thing Magento does not have: JSON overlays. This section is the map of every seam.

Page What it covers
Extension points Every registry, interface and event a module can bind to, each with a working example
CSS and JavaScript in your module How to style and script an admin screen that runs under Nebula
Third-party extensions What keeps working for an extension you already run, how to check one, and what to do when it does not fit
Generators Scaffolding a CRUD module, a grid, a form, or converting UI Component XML

The rule every seam follows

Adding a field type, a column type, a data source, a save behaviour, an option source, or a grid should take one adapter class bound in di.xml and one definition. It should never require editing a switch inside the engine. If you find yourself copying a Nebula module to change one thing, there is a seam you have not found; check the Extension points page.

The three ways to change a screen

You want to Do this Page
Add, change or remove a column, field, section, button or action on a shipped screen Ship a JSON overlay with the same id Grids, Forms
Render a custom panel or cell Ship a snippet with a template and a view model Snippets
Add a whole screen Ship a definition, a layout handle, a controller and a provider Your first grid, Your first form

Stability

Public contracts live under Api\V1 in each module and are marked @api. A breaking change ships as V2 beside V1 rather than as a new major version of the package. Classes outside Api may change between releases; bind to interfaces where one exists.