The various site features in Rophako are delegated out into pluggable modules. Your
config.py should call a
load_plugin() method for each plugin you want your site to use.
The core plugins
accounts are always loaded automatically. The other built-in plugins like
comment are optional but are enabled by default in the sample config file.
Each of the built-in plugins are loaded as Flask blueprints, and the plugin specifies where it attaches its endpoint to within its own code, i.e. the blog plugin will attach to the
/blog URI. For loading the built-in plugins in your site, just refer to them by name:
Plugins are assumed to be Flask blueprint modules, which use the variable name
mod to hold their Blueprint object. If your plugin isn't a blueprint, and you simply want it to be imported and run (i.e. perhaps it manipulates the
app object directly to specify its endpoints), use the parameter
as_blueprint=False. An example of this is with
kirsle_legacy.py which defines legacy endpoints for kirsle.net for backwards compatible URIs:
Finally, blueprint plugins can keep their own templates bundled within their module's folder. All of the built-in plugins do this -- it means that, for example, if you elect not to include the
photo plugin, that the endpoints for its URIs (i.e.
/photos/album) will give 404 responses.
You can specify the template path for your blueprint's templates as a
template_path parameter to
load_plugin(). By default, the module's name is converted into a path and a
/templates folder is appended. So for example, the blog's template path becomes
rophako/modules/blog/templates. This works fine for built-in modules (as your working directory will be the root of your Flask application), but hasn't been tested for third party modules.
Next Step: Create the Admin User