Extending Convoro
Registries, widgets, search, and how modules avoid knowing about each other.
How do I make two modules work together?
Through a registry in System, not a direct reference. A module that names another cannot be installed without it, and fatals on a site where it is switched off.
Developers
How do I get my module's content into search?
Register a content type with a find callback that takes the viewer's group ids and filters by them. A find that ignores the viewer is a leak.
Developers
How do I make my content work with OpenSearch?
Add documents and gates callbacks to your content type. documents yields what to index; gates says which containers a viewer may read. Provide both or your type is skipped entirely.
Developers
How do I add a widget other people can place?
Register a widget type in register() with a render callback returning HTML. Filter by the viewer's groups inside it — a widget renders on pages you are not thinking about.
Developers
How do I let people comment on something my module owns?
Use the discussions service. It gives your record a hidden topic and reuses posts, so comments get editing, reporting, reactions and moderation without you building any of it.
Developers
How do I make my module honour account deletion?
Register your tables with the personal_data service in boot(). One line per table naming the column that points at a member.
Developers
What is the difference between a module and an extension?
A module ships with Convoro; an extension is a package somebody installs into extensions/. The code is the same shape — the console can scaffold and package one for you.
Developers