What a fresh install contains
A new shop created with composer create-project thelia/thelia-project comes with the core, four themes (Flexy for the front office, the Twig back office, the e-mail and PDF templates) and the modules listed below. The project depends on a single package, thelia/thelia-skeleton, and the list is declared in two places you can read without installing anything: the require section of the skeleton for the modules the distribution ships on its own, and the composer.json of each theme for the modules its rendering depends on.
Shipped and active are two different things
Every module below is installed on disk and registered in the shop. Whether it is active right after the installation is declared by the module itself, in its Config/module.xml, through the optional <enabled-by-default> element. A module that says nothing, or says 1, is active as soon as the shop is installed. A module that says 0 is registered inactive: it appears in the modules list of the back office, does nothing until you activate it, and its configuration screen opens once it is active.
To activate a module, open Modules in the back office and click Activate on its row, or run:
php Thelia module:activate <ModuleCode>
An update never rewrites the state you chose. A module you activated stays active, a module you deactivated stays inactive.
Modules declared by the distribution
These modules are useful to the shop whatever theme it uses, so the skeleton declares them directly. Changing the front theme does not remove them.
| Code | What it does | Default state | Source |
|---|---|---|---|
| Cheque | Payment by cheque | Active | thelia-modules/Cheque |
| FreeOrder | Confirms an order with nothing left to pay (fully discounted cart) | Active | thelia-modules/FreeOrder |
| CustomDelivery | Delivery with prices you configure yourself | Active | thelia-modules/CustomDelivery |
| VirtualProductDelivery | Delivery of virtual products, no shipping | Active | thelia-modules/VirtualProductDelivery |
| HeaderHighlights | Promotional messages and images in the header of the front office | Active | thelia-modules/HeaderHighlights |
| RecentlyViewed | Records the products a customer viewed and exposes them to the front | Active | thelia-modules/RecentlyViewed |
Modules required by the themes
These modules stay in the composer.json of a theme because the theme cannot render without them. Another theme may require a different set.
| Code | What it does | Required by | Default state | Source |
|---|---|---|---|---|
| TwigEngine | Twig template engine for Thelia | Flexy, back office, e-mail and PDF templates | Active | thelia-modules/TwigEngine |
| TheliaLibrary | Media library and image processing | Flexy (also pulled by TheliaBlocks) | Active | thelia-modules/TheliaLibrary |
| TheliaBlocks | Content blocks editor used for CMS content | Flexy | Active | thelia-modules/TheliaBlocks |
| ShortCode | Short codes in content, WordPress syntax | Pulled by TheliaBlocks | Active | thelia-modules/ShortCode |
| Page | CMS pages rendered by the front theme | Flexy | Active | thelia-modules/Page |
| SEOne | SEO tools for the front office | Flexy | Active | thelia-modules/SEOne |
| Tiptap | WYSIWYG editor of the back office | Back office | Active | thelia-modules/Tiptap |
What is not shipped
The distribution ships what most shops need on day one and leaves the rest to Composer, so that a shop does not carry code it will never use. Two families of modules are deliberately absent:
- Structuring modules that change the data model or the checkout for a subset of shops, such as customer families or gift cards. Install them when the shop needs them.
- Online payment connectors. Each shop picks the ones matching its contracts.
Adding a module is one Composer command, run at the root of the project:
composer require thelia/<module-name>-module
php Thelia module:activate <ModuleCode>
The list of official modules and their package names is on Packagist and in the thelia-modules organization.
Shops installed before skeleton 3.2
Until skeleton 3.2, Cheque, CustomDelivery, FreeOrder, VirtualProductDelivery, HeaderHighlights and RecentlyViewed reached a shop through the composer.json of the themes. They now come from the skeleton, and the themes no longer require them.
A project created with thelia/thelia-project depends on thelia/thelia-skeleton, so a full update brings skeleton 3.2 and the six modules with it. The shop keeps them, and their active or inactive state is not touched:
composer update
Update the whole project rather than a theme alone. A theme that no longer requires these modules declares a conflict with any skeleton older than 3.2, so composer update thelia/flexy on a project still on skeleton 3.1 keeps the current theme version instead of removing modules. The new theme version comes with the full update that also brings skeleton 3.2.
Checking your own install
On an installed shop, the effective list is:
php Thelia module:list
On a fresh install it matches the two tables above, module for module. A difference means a module was added, removed or toggled after the installation.