Silverstripe module that creates a simple page in the CMS to map products and categories to.

Installs: 556

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 5

Forks: 3


2.0.4 2021-07-21 17:22 UTC

This package is auto-updated.

Last update: 2024-02-21 22:58:08 UTC


A custom page type that either allows:

Mapping of product objects (defined via config) to a CMS page


Mapping of multiple categories to a page in the CMS that then renders them (and their products) into a template.

The page type also includes a $PaginatedChildren variable to allow automatically breaking up larger product lists into smaller pages.


The easiest way to install this module is via composer:

# composer require "silverstripe/cataloguepage"

Otherwise install and download this module to the "cataloguepage" folder in your project root.


  • Silverstripe Framework 4.0 +
  • Silverstripe CMS 4.0 +


  • Silverstripe Catalogue


Unless you are using the SilverCommerce catalogue admin or frontend you will need to identify your custom product and category classes.

Custom Product or Categories

To customise the Product and Category objects that are used via this page, you will need to change the "product_class" and "category_class" config variables on CataloguePage.

It is important to be aware that CataloguePage will attempt to hand over the current request to a controller identified by the "base_product_controller" config variable. You will need to ensure that you create a conntroller that can render your product.

The easiest way to do this is to set it in your config.yml as below:

  product_class: 'Product'
  category_class: 'Category'
  base_product_controller: 'ProductController'


Setup the catalogue as normal (add categories and then add products to them).

Then add a catalogue page.

Once the page is created, you should have "Products" and "Categories" tabs in the CMS, use this to add categories that will be displayed on this page.

NOTE If you are using the catalogue module then you will most likely want to disable the frontend catalogue routing and tempaltes. This can be done via silverstripe config:


  enable_frontend: false


Catalogue::config()->enable_frontend = false;