Skip to content

Overview

Franz Holzinger edited this page Feb 23, 2026 · 21 revisions

Table of Contents

The future of tt_products

The following page serves as a central point to discuss the addons and corrections to tt_products. The general conversation is done on the multilingual (German, English, French, Italian) TYPO3 Forum. You can report issues and raise pull requests also at Github for tt_products .

The extension *tt_products* is Open Source. Every programmer is invited to contribute documentation or code snippets. This can also be done in a separate extension with additional features which is based on hooks of tt_products. Please do never create a fork!

You can get the latest version of tt_products and a PayPal extension in the shop of ttproducts.de. This sponsoring is needed to get the bugs fixed, questions answered and new features implemented and tested. This is a fundraising where the contributors and sponsors will get the code in advance. The currently developed extension code will be published on the TYPO3 TER under GPL as free after some months for the current public version. The private version (3.5.2) is available only for sponsors.

Books:
Der TYPO3-Webshop
TYPO3 4.2 E-Commerce

Video: adding & editing products with tt_products

Franz Holzinger is the maintainer of <extension>tt_products</extension> since version 2.0.0.

News

2026: Documentation is online readable at docs.typo3.org.

2024: tt_products 3.5 supports TYPO3 13, 2.16.7 under TYPO3 12 only

1st December 2021: The translations have been copied to the Crowdin Server at https://crowdin.com/translate/typo3-extension-ttproducts

17th April 2021: new version 2.9.17 of tt_products in TER

19th December 2018: TYPO3 >= 8.7.21, >= 7.6.32 and >= 6.2.40: You must set $GLOBALS['TYPO3_CONF_VARS']['FE']['enableRecordRegistration']=true in the Install Tool or in the file LocalConfiguration.php .

29th March 2017: Upload of version 2.8.15 into the TYPO3 TER which supports all TYPO3 8.x versions and all lower versions until 4.5.

4th November 2016: Upload of version 2.8.13 into the TYPO3 TER which supports all TYPO3 7.x versions.


Features

  • Graduated prices which can be entered individually for each product
  • Multiple variants can be entered on the article side.
  • You can assign articles chosen from a group box to products . Each article can be assigned to more than one product even with an additional price. Support for IRRE.
  • Multi language text markers for the shop template (addons_tt_products)
  • Demo shops " TODO .
Send me any error messages per email or to the forum at https://jambage.com .

Recommended extensions

The following extensions can be combined with tt_products to get more features.

  • mbi_products_categories to have many hiearchical categories for a product
  • transactor extension for payment gateways like PayPal, Saferpay and Concardis
  • agency extension for FE user registration
  • addons_tt_products extension for basket icons and example shop template files
  • static_info_tables extenson for country selector box
  • static_info_tables_taxes extension for taxes out of a country table:
  UIDstore = 2       ... uid of the fe_users record with the data of the store
  UIDstoreGroup = 2  ...  the UIDstore FE user must be a member of this comma separated list of group ids
  • patch10011 for a possibility to check the basket content and the shipping country in a TypoScript condition
Use this for the case when the user enters his address data and after then the shipping price shall be shown. There is no need of a country selection for the shipping price any more.
  • taxajax extension for dynamic changes of the output when clicking on the variant selector box
  • tcpdfbill_tt_products to automatically generate a PDF bill and send it with each order attached to the order confirmation email.
  • tsparser to have an enhanced constants editor which does not add many zero constants which are already existent by default.
  • voucher to deal with voucher codes
  • (given up) myDashboard for several lists: a most recent order list, newest products, out of stock, few on stock

Wanted

You are welcome to join the team to implement your features of tt_products. (see the tt_products news list. If you have already a working shop and want to be sure that it will remain compatible to future versions of TYPO3, help us to achieve this: Give us a full copy of your TYPO3 tt_products implementation. This is necessary to test it during the development process.

Translations

Please contribute translations at https://crowdin.com/translate/typo3-extension-ttproducts . The texts in other languages than English can be downloaded from there. You must activate it in the file typo3conf/AdditionalConfiguration.php :

   <?php
   $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['betaTranslationServer'] = true;

The tranlation feature from Crowdin is only partly implemented in TYPO3 11.5. You must download the translated files manually into your TYPO3 environment. E.g download the files for German from:

   https://crowdin.com/project/typo3-extension-ttproducts/de 

and then copy them into in the same subfolder structure:

   /var/www/html/typo3conf/l10n/de/tt_products/master/Resources/Private/Language/

Download

TER: <extension>tt_products</extension>

You will find the tt_products 2.9.5 sources (and all older versions) with the Extension Manager. The official sources with small corrections (maybe not working) are downloadable from Github tt_products .

 git pull https://github.com/franzholz/tt_products

Only the latest code of the master of a version specific branch may be uploaded into TER.
See the tt_products manual for upgrade steps from previous versions of tt_products.

Newer versions of tt_products are availble and can be ordered from the website tt_products.de Shop.

Templates

See the extension addons_tt_products for example shop template files.

Documentation

Marker

This is documented on the subpage tt_products Marker

Installation Instructions

Remove your tt_products extension from the Extension Manager, download the file above and copy its contents to the local folder typo3conf/ext/tt_products or the global typo3/ext/tt_products on your server.
Then use the Extension Manager's "Available extensions to install" and add the Shop system again.

Install Tool:

[FE][cacheHash][excludedParameters]:

Add these: eID,search,tt_products[search],tt_products[pp]

Categories

You have several setup options to configure the display and the behaviour of category lists and menues.

Recommendations

Put your recommendations here. Send error messages directly to the author.

  • Recommendation 1:
If you use PIDthanks then you have to use also the BASKET_ORDERTHANKS_TEMPLATE used for displaying a thanks page.
  • Recommendation 2:
I had the problem, that when choosing a variant of a product and the marker ###ARTICLE_NOTE### was used in conjunction with id="###ARTICLE_NOTE_ID###" all german special characters showed up as "?". Setting ['t3lib_cs_convMethod'] = 'recode' and ['t3lib_cs_utils'] = 'recode' solved the problem. It seems to me that the standard conversion methods used in TYPO3 (used version was 4.2.8) screwed up a little bit here.
  • Recommendation 3:
No extension is added as suggested for tt_products due to misunderstanding from some users who thought that these extensions were required. So here comes the list of suggested extensions: agency, pmkhtmlcrop, static_info_tables, static_info_tables_taxes, taxajax, transactor

Hooks

It's much easier to upgrade from one shop-version to the current one, when addons are added using hooks. When a hook exists what is not listed here, then just add it to this page! --Daniel Brüßler 09:45, 21 April 2007 (CEST)

getLinkParams

example usage: I need to add certain parameter to the "back to list" links

documentation@2007-03-17 - available in the next version (suppose 2.5.3): <php>$hookObj->getLinkParams($this,$queryString,$excludeList,$addQueryString,$bUsePrefix,$bUseBackPid,$piVarCat);</php>

You can define your method with the $addQueryString as a reference. Then you can change the contents.

 <php>function getLinkParams($excludeList='',&$addQueryString, ...) {
  ...
  $queryString['backPID'] = 0815;

}

addGlobalMarkers

example usage: I need to add "global" content what comes from the FlexForm or what is defined by TypoScript

documentation@2007-04-21 - available since version 2.5.2:

You define the method in an extra class:

    class tx_ttproducts_markeradd {
        function addGlobalMarkers(&$markerArray)     {
            $markerArray['###EXT_PRODUCT_YOURNEWMARKER###'] = 'YOURNEWMARKER-content';
            return;
        }
    }
    if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/YOUREXTENSIONKEY/marker/class.tx_ttproducts_markeradd.php']) {
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/YOUREXTENSIONKEY/marker/class.tx_ttproducts_markeradd.php']);
    }
    if (defined('TYPO3_MODE')) {
        $TYPO3_CONF_VARS['EXTCONF'][TT_PRODUCTS_EXTkey]['addGlobalMarkers'][] =
        'EXT:ext/YOUREXTENSIONKEY/marker/class.tx_ttproducts_markeradd.php:&tx_ttproducts_markeradd';
    }

and load it in the main class class.tx_ttproducts_pi1 using require_once.

getItemMarkerArray

You can use the hook at function getItemMarkerArray in model/class.tx_ttproducts_article_base.php to add markers on a product/article base.

Migration to TYPO3 9.5 and later

Speaking Url

If you have formerly used realurl and want to keep the already existing links, then you can migrate the speaking urls by this method. Just execute this SQL:

    SELECT CONCAT('UPDATE tt_products SET slug = "',value_alias,'" WHERE uid = ',tt_products.uid,';'), tt_products.uid, slug, value_alias FROM tt_products,tx_realurl_uniqalias WHERE tx_realurl_uniqalias.tablename = 'tt_products' AND tx_realurl_uniqalias.expire=0 AND tt_products.uid = tx_realurl_uniqalias.value_id

Or here is an alternative php script: PHP script which migrates from realurl to routing enhancer slug field

Upgrade scripts

Use the tt_products upgrade scripts in the Install Tool if necessary. Before TYPO3 9 you must do everything manually by yourself using a database tool like phpMyAdmin. Since TYPO3 10 you can use the upgrade wizards in the Install Tool.

  1. Upgrade the products to articles relations if you change the articleMode from 0 to 1 or 2 in the Extension Manager. useArticles must be changed too.
  2. If you use the graduated tables then you must once change the renamed fields of table tt_products_mm_graduated_price. Rename product_uid into uid_local, rename graduated_price_uid into uid_foreign, rename productsort into sorting, rename graduatedsort into sorting_foreign
  3. The order to product relation fields of table sys_products_orders_mm_tt_products have been changed. Check if this is necessary in your case. If yes then rename sys_products_orders_uid into uid_local, rename tt_products_uid into uid_foreign .
  4. Upgrade the images into FAL images.
  5. Upgrade the datasheets into FAL datasheets.

Speaking Url

Since TYPO3 9.5 the speaking urls are implemented by the Routing Enhancer. In former versions the extension realurl has been used in most cases.

Configure the slug extension in the setup of the root page:

  1. Module configuration for extension slug
    module.tx_slug {
        settings{
            additionalTables{
            tt_products {
                    label = Products
                    slugField = slug
                    titleField = title
                    icon = EXT:tt_products/Resources/Public/Icons/tt_products.gif
                   # versions 2.9.x: 
                   # icon = EXT:tt_products/res/icons/table/tt_products.gif
                }
            }
        }
    }

example Yaml file for the routing enhancer with tt_products support:

routing enhancer for tt_products

Wishlist

newly implemented

  • credit card payment via Paypal: Paypal extension can be used together with the Payment Library and tt_products

Add your wishes here

what should be implemented in the next step.

  • integration with other backend shop data, for example stock, shipping services like Hermes, CRM
  • using rg_slideshow for product pictures would be nice
  • it would be nice if it was possibly to select autorotation of highlights and offers. I.e. two 'offers' or 'highlights' displayed on the front page � each time the page is updated, the next (or random) two 'offers'/'highlights' are displayed. I know 'ke_showproducts' have this feature, but it do not allow you to use al the fields of tt_products (only 'image' and 'title').
  • XML product feeds, to import products from supplier XML DB.
  • category support by page. Select category when you create an article or product and save all products and acticles in one sysfolder. Create new page, insert shop, selct list, chose category that is to be displayed, or select all
  • it would be nice if multiple price discount percentage user groups could be added. Ie. admin adds a user COMPANY 3 to user group 1 and this user group has 10% off price (configureable) and prices are automatically cut off 10% when he logs in, or even better - under the price his discount is displayed as: Your discount: 10%. Then, 10% is deducted from total in his basket or total sum. This way it could enable nice reseller purchasements or wholesale. It would be absolutely GREAT if additionally products or products groups could have different discount rates. Ie. Prod group 1 for user group 1 discount: 8%.
  • Always check if the amount of products is on the stock before making an order possible.
  • Shop Search
  • Mini Basket
  • Create a price value where shipping costs nothing
  • Ratings : rate popularity of the product
  • opinions/feedback left by others(registered users) who used the product.
  • Possibilitie to have a Main product and from there a link to accessoires which you also can buy if you want.
  • Backend module for order processing, product and user administration
  • Possibility to use 4 decimals (0,0231) for wholesale items.
  • Possibility to sell downloadable items, e.g. pictures or software.
  • display error message for wrong entries on the entry page
  • make TMENU usable with the products sysfolder
  • possibility to save automatically if the customer is male or female.
  • More options when showing the variants in single view ex. use radio buttons instead of droplist; show variant price next to option. ex. SIZE - PRICE
  • would be nice to have this module using Flex and Templavoila, instead of traditional TS templating
  • Resize images to a exact size (ex: 150px x 120px) even if they are horizontal or vertical sized

Implemented Shops

Here you can enter the URLs of the shops you have implemented with tt_products.
Please, keep the alphabetical sorting by the URLs.


Goldene Zeiten Juweliere
KRAMSKI Putter Golfausrüstung
LignoPlant - Der Pflanzgutshop von Lignovis
www.leb-recht.de
Shop für Sonnenschutzfolien
Silkes Schmuckmuschel
tt_products shop
Shop für den Orgelbau

TYPO3 Solutions

The records are not shown

If you use the Fluid Styled Contents and want to insert a tt_products record as a content element by "Insert records [shortcut]", then you must put this into the constants:

  styles.content.shortcut.tables := addToList(tt_products)