MaagIT Product 

Extension key

maagitproduct

Package name

maagit/maagitproduct

Version

main

Language

en

Author

Urs Maag

License

This document is published under the Creative Commons BY 4.0 license.

Rendered

Wed, 21 Jan 2026 09:49:38 +0000


This extension implements a versatile shop system based on Extbase & Fluid and using latest technologies provided by TYPO3 CMS.


Introduction 

Introduction to the extension maagitproduct, general information.

Quick start 

A quick introduction in how to use this extension.

Installation 

Provide which steps should be done to install the <extension-key> properly. We recommend to give enough hints to kindly guide the user through this process.

Configuration 

In this section you should cover all the needed configurations to set up the <extension-key> correctly. Additionally you should present an overview about all available configurations one can set up in <extension-key>.

Templates 

In this section you can describe how a user can use its custom templates. Additionally you can present and describe what your custom viewhelpers are doing. Last but not least you can provide some example templates.

The editor section 

This section is specialised for editors. Editors find everything that is useful for them using the <extension-key> in this section.

The developers corner 

Use this section to provide examples of code or any information that would be deemed relevant to a developer. For example explain how a certain feature was implemented.

Troubleshooting 

Use this section for informing about troubleshooting. If the users of your extension encountered any problems they should be able to find information to solve their problems in this section.

What does it do? 

This extension implements a versatile shop system based on Extbase & Fluid and using latest technologies provided by TYPO3 CMS.

Best practise from the scratch

  • Based on Extbase & Fluid
  • Easy to use & understand for editors
  • Using as many elements from the Core as possible, e.g. FAL and sys categories
  • Built in support for content elements
  • Integrated payment interfaces to PayPal, Stripe and Saferpay
  • Define vouchers and discounts
  • Easy definiton of delivery costs
  • Get rating for articles
  • Getting rating of shopping experience
  • and many more ...

It is a highly customizable framework for various shopping carts aspects - more than just a shopping basket! See fully configurated example shop at maagIT Shop.

Need Support? 

There are various ways to get support for this extension!

Stackoverflow 

Please use Stackoverflow to get the best support and tag your question with typo3 and maagitproduct.

Slack 

The dedicated channel #ext-maagitproduct of the TYPO3 Slack Workspace can be used to get in direct contact with other users!

If you are not registered yet, follow this guide.

Personal support 

If you need private or personal support, ask one of the developers for it.

Be aware that this support may not be free of charge!

Contribution 

Contributions are essential to the success of open source projects, but are by no means limited to contributing code. Much more can be done, for example by improving documentation or answering questions on stackoverflow.com.

Contribution workflow 

(1) Please always create an issue on Bitbucket before starting a change. This is very helpful to understand what kind of issue the pull request will solve and if your change will be accepted.

(2) Bug fixes: Please describe the type of bug you want to fix and provide feedback on how to reproduce the problem. We will only accept bug fixes if we can reproduce the problem.

(3) Features: Not every feature is relevant to the majority of the users. In addition: We do not want to make this extension more complicated in usability for a marginal feature. It helps to have a discussion about a new feature before opening a pull request.

(4) Please always create a pull request based on the updated release branch.

Sponsoring 

This extension and the manual have been created in endless hours, mostly by a single person. It is actively maintained to cover all supported TYPO3 versions, user interface concepts and best practice approaches. If this extension helps you in any way to meet your business needs, please consider giving something back and find below some ideas to make me happy.

If you want to make sure this extension will be ready in time for the upcoming TYPO3 release, or you need a feature that isn't implemented yet, just let me know and we'll find a way to organize it!

PayPal 

Support me by a donation on paypal.com. It is just one click away.

Quick installation 

In a composer-based TYPO3 installation you can install the extension EXT:maagitproduct via composer:

composer require maagit/maagitproduct
Copied!

In TYPO3 installations above version 11.5 the extension will be automatically installed. You do not have to activate it manually.

If you are using an older version of TYPO3 or have a legacy installation without composer, have a look at the installation chapter.

Update the database scheme 

Open your TYPO3 backend with system maintainer permissions.

In the module menu to the left navigate to Admin Tools > Maintanance, then click on Analyze database and create all.

Clear all caches 

In the same module Admin Tools > Maintanance you can also conveniently clear all caches by clicking the button Flush cache.

Quick configuration 

Include TypoScript template 

It is necessary to include at least the basic TypoScript provided by this extension.

Go module Site Management > TypoScript and chose your root page. It should already contain a TypoScript template record. Switch to view Edit TypoScript Record and click on Edit the whole template record.

Switch to tab Advanced Options and add the following templates from the list to the right: Maagitproduct (maagitproduct). It is possible to include additional templates provided by the maagitproduct extension depending on your use case. For example you can additionally chose Maagitproduct basket on top CSS to use basket in a header.

Read more about possible configurations via TypoScript in the typoscript section.

Further reading 

Create some initial content 

Create articles 

Before any articles can be shown in the frontend those need to be created.

  1. Go to the module Web > Page
  2. Go to the "Article Storage" Folder that you created in the first step.
  3. Use the button Create new record and select the entry Product.
  4. Fill out all desired fields on all desired tabs (e.g. see Product and click Save.

More information about the records can be found here: recordproduct, recordcategory.

Add plugins: display the articles in the frontend 

A plugin is used to render a defined selection of records in the frontend. Follow these steps to add a plugin respectively for product list and view to the basket:

Product page 

  1. Go to module Web > Page and to the previously created page "Products".
  2. Add a new content element and select the entry MaagIT Product > Maagit Product List.
  3. Switch to the tab Configuration where you can define the plugins settings. The most important settings are Storage Pid and Recursive.
  4. Fill the field Storage Pid by selecting the sysfolder you created in the beginning of the tutorial.
  5. Save the plugin.

Basket 

  1. Go to module Web > Page and to the previously created page "Products".
  2. Add a new content element and select the entry MaagIT Product > Maagit Product Basket.
  3. Switch to the tab Configuration where you can define the plugins settings. The most important settings are Checkout page.
  4. Fill the field Checkout page by selecting the Checkout page you created in the beginning of the tutorial.
  5. Save the plugin.

Read more about the plugin configuration in chapter plugin.

Have a look at the frontend 

Load the "Products" page in the frontend and you should now see the article records as output. A click on the "add to basket" link should add the article to the basket. You want to change the way the articles are displayed? Have a look at the chapter Templating

Quick templating in Fluid 

EXT:maagitproduct is using Fluid as templating engine. If you are not experienced with Fluid yet you can read more about it in the chapter templatingstart.

Copy the Fluid templates that you want to adjust to your templatingsitepackage.

You find the original templates in EXT:maagitproduct/Resources/Private/Templates/ and the partials in EXT:maagitproduct/Resources/Private/Partials/. Never change these templates directly!

To override the standard maagitproduct templates with your own you can use the TypoScript constants to set the paths:

TypoScript constants
plugin.tx_maagitproduct {
   view {
      templateRootPath = EXT:mysitepackage/Resources/Private/Extensions/Maagitproduct/Templates/
      partialRootPath = EXT:mysitepackage/Resources/Private/Extensions/Maagitproduct/Partials/
      layoutRootPath = EXT:mysitepackage/Resources/Private/Extensions/Maagitproduct/Layouts/
   }
}
Copied!

Add these lines to the file EXT:mysitepackage/Configuration/TypoScript/constants.typoscript in your sitepackage.

EXT:maagitproduct provides a couple of specific Fluid viewhelpersreference. Of course all ViewHelpers provided by TYPO3 can be used as well.

In the tutorial section there are many templatingexamples.

Extension Configuration 

Some general settings can be configured in the Extension Configuration.

  1. Go to Admin Tools > Settings > Extension Configuration
  2. Choose maagitproduct

The settings are divided into several tabs and described here in detail:

Records 

Archive Date archiveDate 

archiveDate

archiveDate
type

string (keyword)

Default

date

Define how the archive date field should be rendered:

date
Render the field as pure date
datetime
Render it as date and time field

Enable a RTE for the teaser field rteForTeaser 

rteForTeaser

rteForTeaser
type

bool

Default

If set, the teaser field will be rendered using a RTE.

Define pid of tag records tagPid 

tagPid

tagPid
Type
int
Default
0

New tags can be saved directly inside the news record. The given ID is used as page on which the tag records will be saved.

This setting can also be done with TSconfig, see tsconfigtagpid

If you want to use TsConfig to define the page, set the tagPid to 0 and use the following syntax in TsConfig:

# Save tags on page with UID 123
tx_news.tagPid = 123
Copied!

Prepend at copy prependAtCopy 

prependAtCopy

prependAtCopy
type

bool

Default

1

If set and a news record is copied, the news record will be prepended with the string Copy X.

Category restriction categoryRestriction 

Category restriction: Restrict the available categories in news records.

PageTsConfig:

TCEFORM.tx_news_domain_model_news.categories.PAGE_TSCONFIG_IDLIST=120.
Copied!

Editor needs to have permissions to all selected categories to save a news item categoryBeGroupTceFormsRestriction 

categoryBeGroupTceFormsRestriction

categoryBeGroupTceFormsRestriction
type

bool

Default

If activated, an editor needs to have permissions to all categories added to a news item to be able to edit this record.

Use content element relation contentElementRelation 

contentElementRelation

contentElementRelation
type

bool

Default

1

If set, you can add content elements as relation to a news record. This makes it easy to enrich the news article with further images, plugins, ...

If you want to reduce the available options of the content elements, you can use TsConfig in the sysfolder of the news records:

# Hide content element types
TCEFORM.tt_content.CType.removeItems = header,bullets,table,uploads,menu,list,html,login,mailform,search,shortcut,div
# Hide fields
TCEFORM.tt_content.header.disabled = 1
TCEFORM.tt_content.header_layout.disabled = 1
Copied!

More information can be found at http://docs.typo3.org/typo3cms/TSconfigReference/PageTsconfig/TCEform/Index.html.

Enable manual sorting of news records manualSorting 

manualSorting

manualSorting
type

bool

Default

If set, news records can be manually sorted in the list view by the well known icons "up" and "down".

Disable required date field dateTimeNotRequired 

dateTimeNotRequired

dateTimeNotRequired
type

bool

Default

If set, the date field of the news record is not a required field anymore. Furthermore if creating a new record, it is not filled anymore with the current date.

Be aware that using this feature may lead to unexpected results if using e.g. the date menu if the field is not used anymore.

Show thumbnails in backend list module mediaPreview 

mediaPreview

mediaPreview
type

bool

Default

false

If enabled, the list module will show thumbnails of the media items.

This setting is only evaluated for TYPO3 10 as it has been removed for version 11. Use the extension studiomitte/recordlist-thumbnail to get it back in v11.

Advanced preview configuration for media files advancedMediaPreview 

advancedMediaPreview

advancedMediaPreview
type

bool

Default

1

If enabled, more options are available for editors defining where an media element should be displayed.

Slug behaviour slugBehaviour 

slugBehaviour

slugBehaviour
type

string, keyword

Default

unique

Choose one of the following slug behaviours:

uniqueInSite
The same slug can be used for news in different sites. Use this setting only if no news records are shared between sites.
unique
The same news title in different sites will lead to different slug names.

Page Tree Plugin Preview 

pageTreePluginPreview

pageTreePluginPreview
type

bool

Default

1

If set, pages which contain a news plugin will show an additional icon right to the title in the page tree. This makes it easier to identify pages which are related to EXT:news.

This setting is only relevant since TYPO3 13!

Backend Module 

Show administration module showAdministrationModule 

showAdministrationModule

showAdministrationModule
type

bool

Default

1

If set, the backend module "News" is shown. This view might be easier for editors who use a very limited set of features in the backend.

Hide page tree for Administration module hidePageTreeForAdministrationModule 

hidePageTreeForAdministrationModule

hidePageTreeForAdministrationModule
type

bool

Default

If set, the backend module "News" is shown without the page tree. In combination with the TsConfig redirecttopageonstart you can achieve a very simple workflow for editors if those need only to create news records.

UID of storage to use when importing files/images storageUidImporter 

storageUidImporter

storageUidImporter
type

int

Default

1

Define the uid of the storage which is used for importing media elements into FAL relations.

In which folder should the importer save files/images (has to exist) resourceFolderImporter 

resourceFolderImporter

resourceFolderImporter
type

string

Default

/news_import

Define the folder which is used for the media elements which are imported.

Alternative configuration instead of Admin Tools 

Instead of defining the property in the Admin Tools it is also possible to define the properties in the AdditionalConfiguration.php. This is useful if you want to include the setting in version control.

AdditionalConfiguration.php
 $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['news'] = [
    'advancedMediaPreview' => '1',
    'archiveDate' => 'date',
    'categoryBeGroupTceFormsRestriction' => '0',
    'categoryRestriction' => 'none',
    'contentElementRelation' => '1',
    'dateTimeNotRequired' => '0',
    'hidePageTreeForAdministrationModule' => '0',
    'manualSorting' => '0',
    'prependAtCopy' => '1',
    'resourceFolderImporter' => '/news_import',
    'rteForTeaser' => '0',
    'showAdministrationModule' => '1',
    'slugBehaviour' => 'unique',
    'storageUidImporter' => '1',
    'tagPid' => '1',
];
Copied!