respinar / contao-products
Products Bundle for Contao
Package info
github.com/respinar/contao-products
Type:contao-bundle
pkg:composer/respinar/contao-products
Requires
- php: ^8.3
- contao/core-bundle: ^5.7
Requires (Dev)
- contao/easy-coding-standard: ^7.1
- contao/manager-plugin: ^2.13
- contao/rector: ^1.3
Suggests
- contao/comments-bundle: Adds comments to the product detail and catalog pages.
- terminal42/contao-changelanguage: Adds multilingual support for products.
Provides
None
Conflicts
None
Replaces
None
- dev-main
- 0.47.4
- 0.47.3
- 0.47.2
- 0.47.1
- 0.47.0
- 0.46.2
- 0.46.1
- 0.46.0
- 0.45.2
- 0.45.1
- 0.45.0
- 0.44.0
- 0.43.0
- 0.42.0
- 0.41.0
- 0.40.0
- 0.39.1
- 0.39.0
- 0.38.0
- 0.37.0
- 0.36.0
- 0.35.0
- 0.34.1
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.0
- 0.30.0
- 0.29.1
- 0.29.0
- 0.28.0
- 0.27.2
- 0.27.1
- 0.27.0
- 0.26.2
- 0.26.1
- 0.26.0
- 0.25.0
- 0.24.0
- 0.23.2
- 0.23.1
- 0.23.0
- 0.22.1
- 0.22.0
- 0.21.1
- 0.21.0
- 0.20.1
- 0.20.0
- 0.19.0
- 0.18.0
- 0.17.6
- 0.17.5
- 0.17.4
- 0.17.3
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.12
- 0.16.11
- 0.16.10
- 0.16.9
- 0.16.8
- 0.16.7
- 0.16.6
- 0.16.5
- 0.16.4
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.0
- 0.14.2
- 0.14.1
- 0.14.0
- 0.13.0
- 0.12.0
- 0.11.2
- 0.11.1
- 0.11.0
- v0.10.2
- v0.10.1
- v0.10.0
- v0.9.11
- v0.9.10
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.9
- v0.7.8
- v0.7.7
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.1
- v0.5.0
- v0.4.6
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.0
- dev-product-content-element
- dev-11-attempted-to-load-class-error
- dev-related
- dev-comments
- dev-dev
- dev-bugfix
- dev-bundle
- dev-without-changelanguage
- dev-test
This package is auto-updated.
Last update: 2026-09-20 20:59:46 UTC
README
A simple and flexible products extension for Contao CMS 5.
Features
- Catalogs – Organize products into catalogs (categories) with protected access support
- Products – Manage products with title, alias, date, price, availability, brand, model, SKU, purchase URL, images, and more
- Frontend modules – Product List, Product Detail, and Related Products
- Content elements – Product List, Product Catalog, and Single Product
- Insert tag –
{{product_url::…}}to link a product from any rich text field or template - Twig templates – Fully customizable templates for lists and detail views
- Comments support – Optionally integrate with
contao/comments-bundle - Multilingual support – Optionally integrate with
terminal42/contao-changelanguage - Access control – Catalog-level protection with member group restrictions
Requirements
- PHP
^8.3 - Contao
^5.7
Installation
composer require respinar/contao-products
After installation, run a database update and rebuild the Symfony cache:
vendor/bin/contao-console contao:migrate vendor/bin/contao-console cache:clear
Usage
- Create a catalog in the Contao back end under Products.
- Add products to the catalog.
- Create a frontend module (e.g., Product List) and assign it to a page layout, or insert a Product List content element into an article.
- Customize templates by copying Twig templates from
contao/templates/to your theme.
Product aliases
A product URL consists of the redirect page (reader page) of its catalog and the product alias. Therefore, an alias only has to be unique per website – among all catalogs whose redirect page belongs to the same root page. The same alias may be used by the translations of a product on other websites (e.g. with ChangeLanguage).
- The back end validates the alias when saving a product and prevents changing a catalog's redirect page if it would create duplicate aliases on the target website.
- If existing data contains duplicate aliases on the same website,
contao:migratereports them. The affected products have to be renamed manually, because changing aliases automatically would break existing URLs. - Each product stores the root page of its catalog's redirect page (
rootPageId), so aliases are resolved with a single indexed query.contao:migratefills in the value for existing products.
Insert tag
| Insert tag | Description |
|---|---|
{{product_url::<id or alias>}} |
URL of a product, e.g. {{product_url::12}} or {{product_url::my-product}} |
Product IDs are globally unique and can be resolved directly. Product aliases are unique per website, so they are resolved against the website (root page) of the current page. If the alias is unambiguous, it is resolved regardless of the website.
Optional integrations
Both integrations are optional and detected automatically – the related settings only appear in the back end when the bundle is installed:
-
terminal42/contao-changelanguage– Adds Master and Language settings to each catalog so products can be maintained per language, and translates product URLs when switching languages. Install it with:composer require terminal42/contao-changelanguage
-
contao/comments-bundle– Adds a Comments section to each catalog.
Templates
| Template | Description |
|---|---|
frontend_module/product_list.html.twig |
List view with pagination |
frontend_module/product_detail.html.twig |
Single product detail view |
frontend_module/product_related.html.twig |
Related products list |
product_full.html.twig |
Full product output |
product_card.html.twig |
Card product output |
product_compact.html.twig |
Compact product output |
Each template is divided into named blocks (figure, tags, title, meta, info, offer, summary, text, enclosures, …) so you can override individual sections without copying the whole template:
{% extends "@Contao/product_card.html.twig" %}
{% block buy %}
{# your custom buy link #}
{% endblock %}
License
This bundle is released under the MIT license.