Developer Guide

Applies to: Jamroom 7.0+ Last verified: 2026-10-24
  • Everything is a module

    In Jamroom, everything is a module or a skin, even the core. Every request goes to the core's router (modules/jrCore/router.php), which hands it to the module that owns the URL, or to a skin template. Modules add features to each other through registered features and events, without changing each other's code.

    This chapter is for PHP developers who build modules. For templates and skins, see Customizing Your Skin and the Template and Function Reference.

  • Before you start

    • A local or test Jamroom site, never your live one. Install Developer Tools: it ships with Jamroom.
    • Turn on Run in Developer Mode in Developer Tools' Global Config. Caching is off, templates are rebuilt on every request, and each module's Info tab lists the events it fires and listens for.
    • Read the code. Every core function has a docblock, and the bundled modules are the best examples. Blog (jrBlog) is small and uses most features: a DataStore, profile pages, forms, listeners and quota settings.
  • Reading order

    1. Creating a Module: a working module, step by step
    2. Module Naming and Module File Structure
    3. How a Request Is Handled and The _init() Function
    4. DataStores, Events and Listeners, The Queue System and Maintenance Events
    5. The Image System

    The pages after them are how-tos for common tasks, then tools for debugging, testing and packaging.

Tags