4.4 KiB
title: Modules summary: Extend core functionality with modules.
Modules
SilverStripe is designed to be a modular application system - even the CMS is simply a module that plugs into the core framework.
A module is a collection of classes, templates, and other resources that is loaded into a top-level directory such as
the framework
, cms
or mysite
folders. The only thing that identifies a folder as a SilverStripe module is the
existence of a _config
directory or _config.php
at the top level of the directory.
mysite/
|
+-- _config/
+-- code/
+-- ..
|
my_custom_module/
|
+-- _config/
+-- ...
SilverStripe will automatically include any PHP classes and templates from within your module when you next flush your cache.
Creating a module is a good way to re-use abstract code and templates across multiple projects. SilverStripe already
has certain modules included, for example the cms
module and core functionality such as commenting and spam protection
are also abstracted into modules allowing developers the freedom to choose what they want.
Finding Modules
- Official module list on silverstripe.org
- Packagist.org "silverstripe" tag
- Github.com "silverstripe" search
Installation
Modules should exist in the root folder of your SilverStripe installation.
From Composer
Our preferred way to manage module dependencies is through the Composer package manager. It enables you to install modules from specific versions, checking for compatibilities between modules and even allowing to track development branches of them. To install modules using this method, you will first need to setup SilverStripe with Composer.
Each module has a unique identifier, consisting of a vendor prefix and name. For example, the "blog" module has the
identifier silverstripe/blog
as it is published by silverstripe. To install, use the following command executed in
the root folder:
:::bash
composer require "silverstripe/blog" "*@stable"
This will fetch the latest compatible stable version of the module. To install a specific version of the module give the tag name.
:::bash
composer require "silverstripe/blog" "1.1.0"
From an Archive Download
Alternatively, you can download the archive file from the modules page and extract it to the root folder mentioned above.
Publishing your own SilverStripe module
See the How to Publish a SilverStripe Module for details on how to publish your SilverStripe modules with the community