.. You may want to use the usual include line. Uncomment and adjust the path. .. include:: ../Includes.txt .. role:: underline ================ EXT: Shop System ================ :Author: Kasper Skårhøj :Created: 2002-11-01T00:32:00 :Changed by: Franz Holzinger :Changed: 2015-01-27T12:33:39.710606231 :Classification: tt_products :Keywords: forAdmins, forIntermediates :Author: Franz Holzinger :Email: franz@ttproducts.de :Info 4: :Language: en |img-1| |img-2| EXT: Shop System - tt\_products .. _EXT-Shop-System: EXT: Shop System ================ Extension Key: tt\_products Language: en Keywords: forAdmins, forIntermediates Copyright 2011, Franz Holzinger, This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml The content of this document is related to TYPO3 \- a GNU/GPL CMS/Framework available from www.typo3.org .. _Table-of-Contents: Table of Contents ----------------- `EXT: Shop System 1 <#1.EXT:%20Shop%20System|outline>`_ **`Introduction 3 <#1.1.Introduction|outline>`_** `Version 3 <#1.1.1.Version|outline>`_ `Cease and Desist Letters 3 <#1.1.2.Cease%20and%20Desist%20Letters|outline>`_ `Translations 3 <#1.1.3.Translations|outline>`_ `Upgrade 3 <#1.1.4.Upgrade|outline>`_ `What does it do? 3 <#1.1.5.What%20does%20it%20do_|outline>`_ `Developers 4 <#1.1.6.Developers|outline>`_ `Sponsors 4 <#1.1.7.Sponsors|outline>`_ `Support 4 <#1.1.8.Support|outline>`_ **`Users manual 5 <#1.2.Users%20manual|outline>`_** `Note: 5 <#1.2.1.Note:|outline>`_ `Mini-Basket: 5 <#1.2.2.Mini-Basket:|outline>`_ `Calculation script: 6 <#1.2.3.Calculation%20script:|outline>`_ `Discount: 6 <#1.2.4.Discount:|outline>`_ `Link for products of the last X days 6 <#1.2.5.Link%20for%20products%20of%20the%20last%20X%20days|outline>`_ `Offers and highlights 6 <#1.2.6.Offers%20and%20highlights|outline>`_ `AGB General Trading Conditions 6 <#1.2.7.AGB%20General%20Trading%20Conditions|outline>`_ `MEMO page 6 <#1.2.8.MEMO%20page%20|outline>`_ `Voucher System 6 <#1.2.9.Voucher%20System|outline>`_ `Creditpoint System 7 <#1.2.10.Creditpoint%20System|outline>`_ `Gift Certificates 7 <#1.2.11.Gift%20Certificates|outline>`_ `Buy-a-Case 7 <#1.2.12.Buy-a-Case|outline>`_ `Product Articles with Special Prices 7 <#1.2.13.Product%20Articles%20with%20Special%20Prices|outline>`_ **`Administration 9 <#1.3.Administration|outline>`_** `Installation 9 <#1.3.1.Installation|outline>`_ `Handling of Categories 9 <#1.3.2.Handling%20of%20Categories|outline>`_ `Handling of Images 9 <#1.3.3.Handling%20of%20Images|outline>`_ `Important 9 <#1.3.4.Important|outline>`_ `Template markers 10 <#1.3.5.Template%20markers|outline>`_ `Automatic creation of frontend users and address fields 12 <#1.3.6.Au tomatic%20creation%20of%20frontend%20users%20and%20address%20fields|ou tline>`_ `Product properties: 12 <#1.3.7.Product%20properties:|outline>`_ **`Configuration 15 <#1.4.Configuration|outline>`_** `FAQ 15 <#1.4.1.FAQ|outline>`_ `Files 15 <#1.4.2.Files|outline>`_ `Description 15 <#1.4.3.Description|outline>`_ `Reference 15 <#1.4.4.Reference|outline>`_ `Display Modes (CODE) 26 <#1.4.5.Display%20Modes%20(CODE)|outline>`_ `CSS configuration 27 <#1.4.6.CSS%20configuration|outline>`_ `Configuration of Articles, Products, Categories, Pages, Addresses and Images 28 <#1.4.7.Configuration%20of%20Articles,%20Products,%20Categor ies,%20Pages,%20Addresses%20and%20Images|outline>`_ `Form configuration 33 <#1.4.8.Form%20configuration|outline>`_ `Basket configuration 33 <#1.4.9.Basket%20configuration|outline>`_ `Control configuration 34 <#1.4.10.Control%20configuration|outline>`_ `Payment, shipping and handling configuration 34 <#1.4.11.Payment,%20s hipping%20and%20handling%20configuration|outline>`_ `Shipping Cost Calculation shippingcalc / handlingcalc 40 <#1.4.12.Shi pping%20Cost%20Calculation%20shippingcalc%20/%20handlingcalc|outline>` _ `Pricecalc, discountprice and creditpoints configuration 41 <#1.4.14.P ricecalc,%20discountprice%20and%20creditpoints%20configuration|outline >`_ `Voucher System Configuration 43 <#1.4.15.Voucher%20System%20Configuration|outline>`_ `Bill and Delivery Configuration 43 <#1.4.16.Bill%20and%20Delivery%20Configuration|outline>`_ `payment\_DIBS.php 44 <#1.4.17.payment_DIBS.php|outline>`_ **`Known problems 45 <#1.5.Known%20problems|outline>`_** `Checklist: 45 <#1.5.1.Checklist:|outline>`_ `General: 45 <#1.5.2.General:|outline>`_ **`To-Do list 46 <#1.6.To-Do%20list|outline>`_** **`Changelog 47 <#1.7.Changelog|outline>`_** .. _Introduction: Introduction ------------ You should read the `German tutorial `_ or `Italian tutorial `_ or one of the books `'Der TYPO3 Webshop' `_ and ' `TYPO3 4.2 E-Commerce `_ ' before you start with it. Watch this `introduction video `_ `. `_ See the extension addons\_tt\_products for newer example template files. This extension only works with PHP5. .. _Version: Version ^^^^^^^ This document is for version 2.9.1 of tt\_products. You can get the code of the next version of tt\_products at `ttproducts.de `_ . .. _Cease-and-Desist-Letters: Cease and Desist Letters ^^^^^^^^^^^^^^^^^^^^^^^^ Do not use trademarks, photographs and maps in your shop which you do not own and made by yourself. Do not forget any texts in your shops which are required. Be very careful when you link to other pages.Hundreds of lawyers are continuously searching the Internet for your mistakes in order to get much more money from you than you could ever imagine. **That would be damn stupid for you.** `http://www.legalshop.co.uk `_ .. _Translations: Translations ^^^^^^^^^^^^ A German translation of this document is available under the extension key `doc\_ttproducts\_de `_ . A French translation is under development at `doc\_ttproducts\_fr `_ . .. _Upgrade: Upgrade ^^^^^^^ If you upgrade from Version 1.2.7 you have to do all the administrative steps under the topic 'Important'. .. _What-does-it-do: What does it do? ^^^^^^^^^^^^^^^^ The Typo3 shop extension gives you the facility for... - Product listings with multiple images, details and languages - Shopping basket - Payment page - The orders will be indicated and can be checked over before the products are finalized. - sponsors only: Payment gateways with Payment Library extension - Paypal and Transaction Central - Tracking customers order status - Automatic creation of bill and delivery sheet - Different tax percentages per item, shipping and payment - basic stock management - Send a CSV for each order to the shop admin (2 choosable file formats) - E-Mail-Attachments for the confirmation mails (for example AGB in German = General trading conditions) - choosable item variants (colors, sizes, gradings, description, materials and qualities) - Force customer to accept the General trading conditions (AGB) per checkbox - Offers, highlights and newly added items - Special preparation, weight and bulkily (can be used to calculate the shipping fee) - Ability to limit payment methods to specific user groups - Automatic creation of frontend users at first order - Remember items in a memo, when a user is logged in - Discount percentage per user - Some methods for price calculation with rebate for resellers - Display orders: order can be displayed on per fe-user basis (CODE=ORDERS) - Creditpoint system: customers can save credit points per each order. Saved points will give them a discount for newer orders or certain products can be "bought" with these points. - Voucher system: if a new customer indicates when registrating that she/he was tipped by another existing customer, this customers gets a credit point bonus. The new customer gets a discount on first order. - Gift certificate: Users can buy certificates and send them as gifts to their friends. After signing on as front end users they can transform their gift certificates into creditpoints. .. _Developers: Developers ^^^^^^^^^^ - Kasper Skårhøj: 1 :sup:`st` developer 1.2.7 / TYPO3 3.8 - René Fritz: 1 :sup:`st` developer 1.2.7 / TYPO3 3.8 - Franz Holzinger (trainer): price calculation, discount price, gift certificates, e-mail table for notification, error correction, billing, receipts, multi-column listings, product/articles tables, multiple languages, DAM list and category list - Klaus Zierer (trainer of zk\_products): more sizes and colors, entry lists, automatic registration of front-end users, category pages. In zk\_products you can find a good example shop template. - Els Verberne: Credit point system and voucher system, Order lists .. _Sponsors: Sponsors ^^^^^^^^ - The development of gift coupons was carried out by Franz Holzinger. It was sponsored by BENDOO e-work solutions of the Netherlands ( `http://www.bendoo.nl `_ ). For more information contact BENDOO at `hiddink@bendoo.com `_ . - The shopping of articles without attributes from a product, the category select box, the image naming using parts of table field entries and of the DAM table, and the shipping setup using the static\_countries and a credit cards table was carried out by Franz Holzinger. It was sponsored by `http://www.henrikjahn.de/ `_ Germany. For more information contact Henrik Jahn at `jahn@henrikjahn.de `_ . - `pil.dk - Professionelle Internet Løsninger ApS `_ is a main sponsor of the code for the Payment Library extension. - `lightimaging images database `_ - superb images of nature, royalty-free - Multi-categories per product with multilingual listings, import scripts for XML files from inventory control systems, custom shop tables, advanced search mask with producer select box, traffic light symbols to display the availability of articles. Sponsored by `Geo.net IT GmbH `_ . `Websolutions für Apotheke und Pharmazie `_ TYPO3 FullService \* Konzeptionierung \* Realisierung \* TYPO3 Hosting \*pharmaline - Internet für die Apotheke, Apotheker Christian Platt, Kupferdreher Str 150, 45257 Essen .. _Support: Support ^^^^^^^ You can get support and installation service for this extension at `http://jambage.com/index.php?id=162 `_ . You can download all needed extensions from the TYPO3 TER, `http://typo3.org `_ or from `http://jambage.com/index.php?id=170 `_ . .. _Users-manual: Users manual ------------ .. _Note: Note: ^^^^^ The data path is renamed from 'pi' to 'pi1', thereby tt\_products will now be put together like standard TYPO3 extensions. If paths have been employed from previous versions of tt\_products then these must now be renamed in TypoScript setup. If you newly installl or update the extension, please observe the Depencies in TER (online repository of the extension manager). You must fill in the product's 'In Stock (pcs)' field of your product properties, or no item will be shown in your frontend list if set to 0. This has been changed to the older version. However, you should store the prices with included tax in the database; it makes it easier for you to reenter the price as well as for the customer to see the prices as you entered them. These prices should finally have the convention of pricinglike 89.99 and not 89.72. Before you start entering the prices of your products you have to decide whether you want to enter the prices with or without tax (see TAXincluded). All the calculations and configurations will use the prices as they have been stored into the price field of the tt\_products table.You should use a template with multiple columns ( :: plugin.tt_products.conf.tt_products.LIST.displayColumns.1 = 3 or higher) even if you only have one column in the list table. Use an example template from the directory tt\_products/template, like the template, example\_template\_bill\_de.tmpl, when you start your shop. You have to change the page id in the links (after the 'id=...') to the page id of the basket on your site. The marker ###DOMAIN### is the placeholder for your url. There are several placeholders for the different page ids of the shop. This is sensible because different hosting environments will be used. In the setup of the shop templates, the domain marker must become mydomain.com by using the following TypoScript : plugin.domain=mydomain.com). tt\_products is based on the Table Library (table) and Static Methods for Extensions since 2007 (div2007). So you have to always update to the latest versions of these extensions when you update tt\_products. If you want to use the variant fields (color, quantity ...), you must also set the constants 'selectColors' and 'selectSize' at 0 or 1. Otherwise, the count in the product list of articles will be calculated incorrectly. Many adaptations can be undertaken by way of the constant editor. For entering in the shop page, most should be directed in the template's setup field and constant editor. .. _Mini-Basket: Mini-Basket: ^^^^^^^^^^^^ Beside the "normal" basket which shows a complete list of added products and some order options, there is also a "mini-basket" which only shows the number of products in the basket and the total price. This shows or indicates the actualization of the contents of the mini- basket displayed above the normal view (or as desired) while the process in shop steadily continues. The progress of accumulation that the mini-basket indicates can be controlled via typoscript. To use this mini-basket, insert a new content element "Plugin: Products" and in the display view insert 'Basket: overview' or if you use typo3script set the CODE-field to OVERVIEW. Use the following markers in your tt\_products template to enable and customize this mini-basket: Code Listing: ::
###IMAGE_BASKET###

###NUMBER_GOODSTOTAL### Products (EUR ###PRICE_GOODSTOTAL_TAX###.-)

No products in basket.

.. _Calculation-script: Calculation script: ^^^^^^^^^^^^^^^^^^^ If you write and use your own calculation scripts, then you should always use only the price variables. The priceTax and priceNoTax variables will be deleted in August 2008 because they can be calculated from the price variables and the TAXpercentage and TAXincluded constants.You can use the global PHP variables $this->calculatedArray and $this->itemArray to make your own price calculations. :: 10.calculationScript = EXT:tt_products/pi1/products_comp_calcScript.inc .. _Discount: Discount: ^^^^^^^^^ There are several methods to get a discount. Use the discount field for a frontend user and enter the percent of discount. Use the price2 field for special feuser groups or other things. This setting is done in TypoScript via the IF-statement. Use the discountprice calculation where the discount depends on the value of the total number of the products which have a special price. This will be available for the frontend user group 'discountGroupName'. .. _Link-for-products-of-the-last-X-days: Link for products of the last X days ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This is practical for “What is new?” pages. Create simply a link to the SEARCH page and add "newitemdays" as parameters. `http://www.big- typo3-shop.com/index.php?id=8&newitemdays=10 `_ The search result will contain all the products of the last 10 days.You have to use the plugin code LISTNEWITEMS. You can also set the constant " **newItemDays** ". .. _Offers-and-highlights: Offers and highlights ^^^^^^^^^^^^^^^^^^^^^ You have to use the plugin code LISTOFFERS for the items marked as 'offer' and LISTHIGHLIGHTS for the newest items. .. _AGB-General-Trading-Conditions: AGB General Trading Conditions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You have to accept the general trading conditions before you can make an order and continue with the process. A page can be defined for this with "PIDagb". The AGBs have to be displayed there. You can set the target for a link by "AGBtarget". A document (e.g. a PDF file) on the server containing the AGB can be set by "AGBattachment". This will be set to the customer as an email with an attachment to the order confirmation. The shop administration will not get this file. (he can get a CSV file of the order data instead, if wanted). .. _MEMO-page: MEMO page ^^^^^^^^^ You can add items to a memo page when a user is logged in or not. This memo page will be saved in the fe\_user table or in the FE session.Simply create a new page with the Shop plugin as content and enter the code "MEMO". You must set the starting point there too, like in the SEARCH pages. .. _Voucher-System: Voucher System ^^^^^^^^^^^^^^ An interested customer is obtained through invitation by e-mail to visit a shop and purchase products. This e-mail is attached to a unique code which corresponds to a certain amount of credit points (voucher). When they make a purchase, they can redeem these credit points by inputing the unique code. If a customer states in his registration that he has been recruited by another customer, then the referring customer gets credit points. The new customer gets a discount with his first order. Somebody (lets say user 1) can enter a voucher code if he concludes an order. Then user 1 will obtain a discount. This credit entry code undergoes a change with each different user name (which is the e-mail address). Let's say user 2 gets 5 credit points altogether and applies his code to his purchase. Only one entry code out of a voucher system can be used by each user. In fe\_users table there is a field given for this "tt\_products\_vouchercode" which contains the used credit entry code (e-mail of user 2). .. _Creditpoint-System: Creditpoint System ^^^^^^^^^^^^^^^^^^ If a customer purchases a certain number of items, then he gains credit points which are stored in his user's account. If he purchases more items at a later time, he can redeem credit points against the purchase price. The customer can gather credit points with each purchase. :: creditpoints { pricefactor = 0.5 10.type = price 10.prod.1 = 0.02 10.prod.101 = 0.04 10.prod.501 = 0.06 } .. _Gift-Certificates: Gift Certificates ^^^^^^^^^^^^^^^^^ A shop manager can sell, for example, electronic gift certificates for wine bottles. A client may order a certificate that corresponds to 50 credit points (=25 Euros) to send to someone as a gift. To redeem this gift certificate, then one must register as a shop customer and input the certificate code. Thereby, haveing 50 credit points credited to his account. This customer can purchase a particular product with these credit points. Anyone can buy, for example: - 3 certificates @ 25 credit points - 5 certificates @ 50 credit points - 8 certificates @ 75 credit points...all within the same order. .. _Buy-a-Case: Buy-a-Case ^^^^^^^^^^ Wine will be sold in a shop, for instance. Normally, you sell a case of wine bottles (a case can contain 6 or 8 items). The additional service, “buy-a-case”, gives the shop customer the potential to put together his own case of 6 bottles: for example, 2 red, 2 white, 2 rose. The special handling of bottles and cases will be calculated under the buy-a-case concept. The handling per bottle will be calculated 1.50 Euro/bottle; likewise, the extra handling for 2 cases will amount to 2 x 6 x 1.5 = 18 Euros. .. _Product-Articles-with-Special-Prices: Product Articles with Special Prices ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This example shows you how to have different sizes at different prices. The same procedure can be used with color and other variants. Make sure 'Show secondary options (palettes)' is tagged, otherwise some of the fields will not be available. variants: Color (variant 1) 2nd Color (variant 6) 3rd Color (variant 7) Size Lenght (variant 2) 2nd Size Width (variant 8) 3rd Size Height (variant 9) Description (variant 3) Gradings (variant 4) Material (variant 10) Quality (variant 11) Additional (special variant 5) In the TSSetup for the template add :: plugin.tt_products.useArticles = 1 plugin.tt_products.selectSize = 1 If you are using columns to List your products like in the Bananaguard example, you also need :: plugin.tt_products.conf.tt_products.LIST.displayColumns = 1 All this tells TYPO3 to read from the product articles and display a dropdown selection box if variants are used. Add the parent product.This is the primary information that is displayed in the frontend List and Single views, ie description, image etc. Create a new entry in the Web > List mode. Select Product from the available options.You will need to fill out the following fields: - Title - InStock (must have at least 1 to display in the frontend) - Category (if applicable) - Price (this should be the cheapest price for the cheapest size - corresponding to the cheapest product article which we will set up next) - Size (same applies for Color/Description/Grading if applicable)This is crucial - in order for the frontend to be able to select a product variant you need to list all the size options here first, separated by a semi-colon e.g. S;M;X;XL - this will correspond to the product articles we'll create next. - Note - Image - Datasheet (if applicable). Add the product variantsHere we create the different sizes for the parent product. The information is pretty basic, you use to clarify different prices, item numbers (for keeping track of stock), amount of stock etc. Each product variant must relate to one of the sizes (or color etc) we listed in the parent product. - Create a new entry in the Web > List mode. - Select Product Articles from the available options. - Fill out the Title (this will appear in the shopping basket) and - Instock - Price If this variant is the cheapest version this should be the same as the price listed in the Parent Product. - Product Very important, you need to select the parent product using the Element Browser, otherwise the price will not be changed in the shopping basket when a size is selected Size (or Color, Grading is applicable)This must correspond to one of the sizes that was listed in the Product Parent eg XL, if the spelling is incorrect it will not work. - Changes to the html templateThis is the last thing to do. - You'll need to add new fields to the ###ITEM\_LIST\_TEMPLATE### and ###ITEM\_SINGLE\_DISPLAY###. - The Code Listing below for the variant selection box needs to be added and must sit inside of the form tags. Also note that any information between ###display\_variant1### or ###display\_variant2### tags will not be displayed if that variant is not used. This is a useful feature as we can use this to display or hide the word 'From' before the ###PRICE\_TAX### value by putting the ###display\_variant2### tags either side, giving us for example 'From $200' when $200 is the cheapest size (this is why the cheapest price is entered in the product parent - by default the parent product price is displayed in the List and Single view, the variant price is only displayed in the shopping basket once a size (or color etc) has been selected.) When no variant options are available the word From is hidden.Code Listing: :: Color:> Size:> .. _Administration: Administration -------------- In the normal case the categories from the category table and its enhancements are used. You have to set $TYPO3\_CONF\_VARS['EXTCONF']['tt\_products']['pageAsCategory'] = 0 to be able to use them. Otherwise the pages will form the category and the category will be used as subcategory (=1) or not used at all but replaced by the page (=2). Activate now the flexforms in the backup. The code field will be replaced by a graphical user interface. However you have to reenter all your code fields. $TYPO3\_CONF\_VARS['EXTCONF']['tt\_products']['useFlexforms'] = 1 .. _Installation: Installation ^^^^^^^^^^^^ Install the extension with the extension manager. If you already use an older version of tt\_products that's installed in the “global” location (typo3/ext/), it's recommended to install the new extension into the “local” folder (typo3conf/ext/) without overwriting the old one. By doing this you can easily switch back to the former version. Deinstall the extension from the Extension Manager. Then download the version of your choice from the Online Repository with the Extension Manager.Then use the Extension Manager's "Available extensions to install" and add the Shop system again. This extension works best in union with static\_info\_tables, static\_info\_tables\_taxes, sr\_feuser\_register,rtehtmlarea, mbi\_products\_categories, paymentlib andconf\_userts. .. _Handling-of-Categories: Handling of Categories ^^^^^^^^^^^^^^^^^^^^^^ There are multiple ways to create a shop. The usual way is to create sysfolders for the products and lists and single sites where the products are displayed. If you want to do a bigger shop with TYPO3, this will become a little bit unhandy. If you want to make bigger shops with hierarchical categories you shall install the mbi\_products\_categories and maybe also the nsb\_cat2menu extension. Sponsors will get an enhanced version of mbi\_products\_categories with which you can assign many categories to one products via a mm-table. Only with this it will be possible to list DAM images. **Example of tt\_products/ext\_localconf.php:** :: $TYPO3_CONF_VARS['EXTCONF']['tt_products']['pageAsCategory'] = 0; .. _Handling-of-Images: Handling of Images ^^^^^^^^^^^^^^^^^^ There are ways to use and display the infos about images of the DAM extension. .. _Important: Important ^^^^^^^^^ This should be fully downwards compatible to the former tt\_products 1.2.7. But it needs some adaption to the template file. In ###BASKET\_TEMPLATE### you must have the lines :: You have to rename the marker###FIELD\_NAME### to###FIELD\_NAME\_BASKET### in the BASKET\_TEMPLATE. This is compatible with zk\_products 1.3.2. Some of the TypoScript settings do not function via the constants field and must be entered in the setup field. Only those settings which can be found using the Constants Editor or in the file static/old\_style/constants.txtare valid constants. You must include the 'Shop System Old Style' into your 'static template records' of your TYPO3 template. A negative value of a product at 'in stock' does not have any more a special function. This has been replaced by a checkbox 'always on stock'. Change the former input fields for a search into The marker ###SWORDS### must be changed into ###SWORD###, and the name into 'sword'. .. _Template-files: Template files """""""""""""" In your template files for the shop you need to make the following settings so it will work: Put this into your FORM-attributes of the BASKET\_TEMPLATE. .. _Template-markers: Template markers ^^^^^^^^^^^^^^^^ The following template markers for the tmpl-file are used. You have to put ### before and after them. There are more markers, so look into the example template files. .. _area-markers: area markers: """"""""""""" .. ### BEGIN~OF~TABLE ### .. _BASKET-TEMPLATE: BASKET\_TEMPLATE ~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_TEMPLATE Description Area top .. _BASKET-INFO-TEMPLATE: BASKET\_INFO\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_INFO\_TEMPLATE Description This is normally used to let people enter address information separately from the real basket. Exact same features as BASKET\_TEMPLATE. Area top .. _BASKET-ORDERCONFIRMATION-TEMPLATE: BASKET\_ORDERCONFIRMATION\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_ORDERCONFIRMATION\_TEMPLATE Description the final page after the order has been processed. It will not be used for the display, if PIDthanks is set. But this will always be used for the text in HTML emails. see: BASKET\_ORDERTHANKS\_TEMPLATE Area .. _BASKET-ORDERCONFIRMATION-NOSAVE-TEMPLATE: BASKET\_ORDERCONFIRMATION\_NOSAVE\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_ORDERCONFIRMATION\_NOSAVE\_TEMPLATE Description This HTML data will be added to the display after the order has been stored to the database. Area .. _BASKET-ORDERTHANKS-TEMPLATE: BASKET\_ORDERTHANKS\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_ORDERTHANKS\_TEMPLATE Description Used for displaying a thanks page, when PIDthanks is set. This will not be used in the HTML emails.b see BASKET\_ORDERCONFIRMATION\_TEMPLATE Area .. _BASKET-OVERVIEW-EMPTY: BASKET\_OVERVIEW\_EMPTY ~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_OVERVIEW\_EMPTY Description message 'your basket is empty' for OVERVIEW Area .. _BASKET-OVERVIEW-TEMPLATE: BASKET\_OVERVIEW\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_OVERVIEW\_TEMPLATE Description Area .. _BASKET-PAYMENT-TEMPLATE: BASKET\_PAYMENT\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_PAYMENT\_TEMPLATE Description Area .. _BASKET-REQUIRED-INFO-MISSING: BASKET\_REQUIRED\_INFO\_MISSING ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_REQUIRED\_INFO\_MISSING Description Area .. _BASKET-TEMPLATE-EMPTY: BASKET\_TEMPLATE\_EMPTY ~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_TEMPLATE\_EMPTY Description message 'your basket is empty' Area .. _BASKET-TEMPLATE-NOT-LOGGED-IN: BASKET\_TEMPLATE\_NOT\_LOGGED\_IN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_TEMPLATE\_NOT\_LOGGED\_IN Description error message that the user has not logged in Area .. _BASKET-TEMPLATE-INVALID-GIFT-UNIQUE-ID: BASKET\_TEMPLATE\_INVALID\_GIFT\_UNIQUE\_ID ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker BASKET\_TEMPLATE\_INVALID\_GIFT\_UNIQUE\_ID Description error message that a wrong unique id for a gift product has been entered Area .. _BILL-TEMPLATE: BILL\_TEMPLATE ~~~~~~~~~~~~~~ .. container:: table-row Marker BILL\_TEMPLATE Description how your bill file will look like Area .. _DELIVERY-TEMPLATE: DELIVERY\_TEMPLATE ~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker DELIVERY\_TEMPLATE Description for the file of your delivery sheet Area .. _EMAIL-PLAINTEXT-TEMPLATE: EMAIL\_PLAINTEXT\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker EMAIL\_PLAINTEXT\_TEMPLATE Description the email notification text The first line is the subject. Area .. _EMAIL-NEWUSER-TEMPLATE: EMAIL\_NEWUSER\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker EMAIL\_NEWUSER\_TEMPLATE Description email after creation of new frontend use Area .. _ITEM-LIST-TEMPLATE: ITEM\_LIST\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_LIST\_TEMPLATE Description the listing of products on the starting LIST page Area .. _ITEM-LIST-GIFTS-TEMPLATE: ITEM\_LIST\_GIFTS\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_LIST\_GIFTS\_TEMPLATE Description listing of the gift products Area .. _ITEM-SEARCH: ITEM\_SEARCH ~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SEARCH Description Area .. _ITEM-SEARCH-EMPTY: ITEM\_SEARCH\_EMPTY ~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SEARCH\_EMPTY Description Area .. _ITEM-SINGLE-DISPLAY: ITEM\_SINGLE\_DISPLAY ~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SINGLE\_DISPLAY Description Area .. _ITEM-SINGLE-DISPLAY-GIFT: ITEM\_SINGLE\_DISPLAY\_GIFT ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SINGLE\_DISPLAY\_GIFT Description single display used when this is a gift product Area .. _ITEM-SINGLE-DISPLAY-NOT-IN-STOCK: ITEM\_SINGLE\_DISPLAY\_NOT\_IN\_STOCK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SINGLE\_DISPLAY\_NOT\_IN\_STOCK Description single display when item is not in stock Area .. _ITEM-SINGLE-DISPLAY-RECORDINSERT: ITEM\_SINGLE\_DISPLAY\_RECORDINSERT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ITEM\_SINGLE\_DISPLAY\_RECORDINSERT Description see displayCurrentRecord: render the $cObj->data Area .. _MEMO-TEMPLATE: MEMO\_TEMPLATE ~~~~~~~~~~~~~~ .. container:: table-row Marker MEMO\_TEMPLATE Description Area .. _MEMO-NOT-LOGGED-IN: MEMO\_NOT\_LOGGED\_IN ~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker MEMO\_NOT\_LOGGED\_IN Description error message that use has not been logged in for MEMO Area .. _ORDERS-LIST-TEMPLATE: ORDERS\_LIST\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ORDERS\_LIST\_TEMPLATE Description display of the order list Area .. _TRACKING-EMAIL-GIFTNOTIFY-TEMPLATE: TRACKING\_EMAIL\_GIFTNOTIFY\_TEMPLATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker TRACKING\_EMAIL\_GIFTNOTIFY\_TEMPLATE Description notification to the gift recipient in the order tracking Area .. _TRACKING-ENTER-NUMBER: TRACKING\_ENTER\_NUMBER ~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker TRACKING\_ENTER\_NUMBER Description Area .. _TRACKING-WRONG-NUMBER: TRACKING\_WRONG\_NUMBER ~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker TRACKING\_WRONG\_NUMBER Description Area .. ###### END~OF~TABLE ###### .. _single-markers: single markers """""""""""""" **Example** for a wrap: :: datasheet for the product .. ### BEGIN~OF~TABLE ### .. _BROWSE-LINKS: BROWSE\_LINKS ~~~~~~~~~~~~~ .. container:: table-row Marker BROWSE\_LINKS Type Description for browsing the display list over several pages Area .. _DELIVERYCOSTS: DELIVERYCOSTS ~~~~~~~~~~~~~ .. container:: table-row Marker DELIVERYCOSTS Type value Description sum of delivery costs and payment costs Area .. _DELIVERY-NOTENOTE-DISPLAYDESIRED-DATE: DELIVERY\_...NOTENOTE\_DISPLAYDESIRED\_DATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker DELIVERY\_...NOTENOTE\_DISPLAYDESIRED\_DATE Type value Description see also PERSON\_... input field note for orderoutput field note with
instead of linebreaksdesired delivery date of the order Area BASKET\_INFO\_TEMPLATE .. _EXTERNAL-COBJECT: EXTERNAL\_COBJECT ~~~~~~~~~~~~~~~~~ .. container:: table-row Marker EXTERNAL\_COBJECT Type value Description extra preprocessing Cobject Area .. _FIELD-NAME: FIELD\_NAME ~~~~~~~~~~~ .. container:: table-row Marker FIELD\_NAME Type value in form Description the name of a field in a form Area .. _FIELD-NAME-BASKET: FIELD\_NAME\_BASKET ~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker FIELD\_NAME\_BASKET Type value in form Description the basket data in encrypted format Area .. _GC1-GC2-GC3: GC1, GC2, GC3 ~~~~~~~~~~~~~ .. container:: table-row Marker GC1, GC2, GC3 Type value Description global colors Area all .. _GW1B-GW2B-GW1E-GW2E: GW1B, GW2B, GW1E, GW2E ~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker GW1B, GW2B, GW1E, GW2E Type wrap Description global wraps Area all .. _PRICE-TAX: PRICE\_TAX ~~~~~~~~~~ .. container:: table-row Marker PRICE\_TAX PRICE\_NO\_TAX PRICE\_ONLY\_TAX PRICE2\_TAX PRICE2\_NO\_TAX PRICE2\_ONLY\_TAX Type value Description price/price2 of the item with, without and only VAT Area ITEM\_SINGLE .. _PRICE-TOTAL-TAX: PRICE\_TOTAL\_TAX ~~~~~~~~~~~~~~~~~ .. container:: table-row Marker PRICE\_TOTAL\_TAX PRICE\_TOTAL\_NO\_TAX PRICE\_TOTAL\_ONLY\_TAX Type value Description total sum of the items with shipping and payment costs Area all .. _PRICE-GOODSTOTAL-TAX: PRICE\_GOODSTOTAL\_TAX ~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker PRICE\_GOODSTOTAL\_TAX PRICE\_GOODSTOTAL\_NO\_TAX PRICE2\_GOODSTOTAL\_TAX PRICE2\_GOODSTOTAL\_NO\_TAX Type value Description total sum ot the items for price or price2 Area all .. _LINK-BASKET: LINK\_BASKET ~~~~~~~~~~~~ .. container:: table-row Marker LINK\_BASKET Type wrap Description link to the basket page Area basket .. _PRODUCT-LINK-DATASHEET: PRODUCT\_LINK\_DATASHEET ~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker PRODUCT\_LINK\_DATASHEET Type wrap Description link to the datasheet file set in the constant file.datasheetIcon. **Example** : ###GW1B######P\_DATASHEET### 1: ###GW1E### ###PRO DUCT\_DATASHEET1######ICON\_DATASHEET###

###GW1B######P\_DATASHEET### 2: ###GW1E### ###PRO DUCT\_DATASHEET2######ICON\_DATASHEET###

Area .. _ORDER-STATUS-TIME: ORDER\_STATUS\_TIME, ~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker ORDER\_STATUS\_TIME, ORDER\_STATUS, ORDER\_STATUS\_INFO, ORDER\_STATUS\_COMMENT Type value Description order values Area TRACKING\_DISPLAY\_INFO .. _PERSON-NAME-ADDRESS-TELEPHONE: PERSON\_...NAME,ADDRESS,TELEPHONE, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Marker PERSON\_...NAME,ADDRESS,TELEPHONE, FAX,EMAIL, COMPANY, CITY, ZIP, STATE, COUNTRY Type value Description address information fieldshave to be connected with a prefixPERSON\_... the customer of the order DELIVERY\_... the recipient of the order Area .. _PID-TRACKING: PID\_TRACKING ~~~~~~~~~~~~~ .. container:: table-row Marker PID\_TRACKING Type value Description the tracking pid Area .. _STATUS-CODE-60: STATUS\_CODE\_60 ~~~~~~~~~~~~~~~~ .. container:: table-row Marker STATUS\_CODE\_60 Type wrap Description used to allow the disappearance of the text with status code by the shop Area TRACKING\_DISPLAY\_INFO .. _STATUS-OPTIONS: STATUS\_OPTIONS ~~~~~~~~~~~~~~~ .. container:: table-row Marker STATUS\_OPTIONS Type value Description Select menu of state options Area ADMIN\_CONTROL inside TRACKING\_DISPLAY\_INFO .. _SHOPADMIN-EMAIL: SHOPADMIN\_EMAIL ~~~~~~~~~~~~~~~~ .. container:: table-row Marker SHOPADMIN\_EMAIL Type value Description Email-Address of the shop admin Area all .. ###### END~OF~TABLE ###### .. _global-markers: global markers """""""""""""" The global markers are allowed to be used with all subparts. You can even define new markers. **Example:** :: plugin.tt_products.marks { my_marker = Come soon back to our shop! } ###MY_MARKER### .. ### BEGIN~OF~TABLE ### .. _marks: marks ~~~~~ .. container:: table-row Property marks Data type array Description self defined markers Default .. _markerFile-Constants-file-markerFile: markerFile *Constants:* file.markerFile ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. container:: table-row Property markerFile *Constants:* file.markerFile Data type resource / *array of string* Description The marker file with the translations. **Example:** :: plugin.tt_products.markerFile = EXT:myext/marker/fr.locallang.xml Default .. ###### END~OF~TABLE ###### .. _Automatic-creation-of-frontend-users-and-address-fields: Automatic creation of frontend users and address fields ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It is possible to create frontend users automatically after each order. You have to set "createUsers" to "1", enter the PID of the sysfolder as PIDuserFolder in the Setup field. Then you have to set memberOfGroup to the ID of your frontend user group.The customer will get an email with his account data after his first order. This email will contain his account name which is his email address, and his automatically created password. If you do not want to use a single addreliss field, but the address field for the name of the street and the housenumber and additional fields for the ZIP, city and country, then you have to set these in your template file. If you install static\_info\_tables and set “useStaticInfoCountry=1” then the small field static\_info\_country of the fe\_users will be used instead of country. This is useful to make a select box for the country. .. _Product-properties: Product properties: ^^^^^^^^^^^^^^^^^^^ .. _Color-Size-Additional-and-Gradings: Color, Size, Additional and Gradings """""""""""""""""""""""""""""""""""" To enter variants of products you have to separate the values by a semicolon. So for t-shirts with different color and size enter "red;green;blue" in variant1 and "S;X;XL;XXL" in variant2.Color (Variant 1) and Size (Variant 2): enter here values with title and values separated by semicolon ';' like :: M;L;XL;XXL Change the template to support this: :: ###GW2B### Color: ###GW2E###
###GW2B### Size: ###GW2E###
If you do not make colors or size selectable, you have to set selectColor or selectSize to 0 and only use the ###PRODUCT\_COLOR### and ###PRODUCT\_SIZE### markers and within the template itself delete the corresponding ###display\_variant### marker. You can, however, use markers as representations of the colors, also if no different colors can be chosen. The field name of all the fields in the list view and the basket view will be addressed with the marker ###FIELD\_NAME###. The markers will be internally replaced in shop through a field name with which the field can be chosen and attributed correctly. When you have products with different mixes of colors, sizes, and gradations, then you must replace the notation ###FIELD\_NAME#### in the field BASKET\_TEMPLATE with the notation ###FIELD\_NAME\_BASKET###. In the list view of the web module, you can now complete the readily available items with the variant, for example color. For that purpose, you select the table product article. You must set useArticles=1 in the template setup in order to apply the article attributes/properties. When you have prepared products, having arranged product qualities of different color, you use only one article number and one price, etc. for this product. However, when you need, for example, different colors, different article numbers, and perhaps prices, etc then this arrangement occurs in the article property (web module, list, product article table). The advantage is that you do not need to create a completely "new" product. The default quality will be transmitted. You only give the color a new article number and a new price. All other product statements will be accepted. Leave a field empty so the default product quality field content will be accepted. It makes a differene, if an article with different colors or sizes in the product list or shopping cart can be selected. A color or size normally will be chosen by way of a selection box. The quantity for the first color/size will be indicated in the product list. The products in all variables will be, however, individually listed. The lists of products in the basket and in the payment page are, therefore, nearly the same, but will be handled otherwise/differently. You must deactivate selectSize and selectColor whenever you do not want to have selection boxes in the product list. .. _Weight-bulk-and-special-preparation: Weight, bulk and special preparation """""""""""""""""""""""""""""""""""" Each product can have weight (kg) and bulkily (Yes/No). The total weight is calculated and can be used in the price calculation for the shipping costs. If an item has been marked as 'bulkily' then a warning message will be displays ('bulkilyWarning' in setup). By setting 'bulkilyAddition' in setup you can add an additional shipping price for this bulkily item.Special preparation does generally not have a function. Only a marker (like with BulkilyWarning) will be written. You can set here a link to the mail form page. **Example:** :: specialPreparation = special preparation is possible! Order here. .. _Basic-stock-management: Basic stock management """""""""""""""""""""" The field inStock can be used for a stock administration. If "in stock" is at "0", the item will not be visible for the customers any more.After each order the number of the ordered items will be erased from "in stock". If a new item gets created, its number will be set to '1' by default. If you have set 'alwaysInStock=1' then this item will always be available and visible. Otherwise the number of products will be reducted with each order. You can fill in the checkbox for each product to have it always in stock.You can define the unit on the store by "inStockPieces" like "pieces". .. _Several-tax-rates: Several tax rates """"""""""""""""" Each item can have its own tax. But you have to enter this separately for each item. .. _Deletion-of-the-basket: Deletion of the basket """""""""""""""""""""" To enter a delete icon for a product you can enter the following into the shop template: :: .. _Configuration: Configuration ------------- .. _FAQ: FAQ ^^^ If you do not use the Constant Editor to configure the extension, please note the form of the constants assignments in the constants section of your TS template: :: plugin.tt_products { property = value } .. _Files: Files ^^^^^ .. ### BEGIN~OF~TABLE ### .. _class-tx-ttproducts-php: class.tx\_ttproducts.php """""""""""""""""""""""" .. container:: table-row File class.tx\_ttproducts.php Description Main class used to display the product list or the shopping basket. Call it from a USER cObject with 'userFunc = user\_products->main\_products' .. _products-comp-calcScript-inc: products\_comp\_calcScript.inc """""""""""""""""""""""""""""" .. container:: table-row File products\_comp\_calcScript.inc Description Example 'calculationScript' .. _products-template-tmpl: products\_template.tmpl """"""""""""""""""""""" .. container:: table-row File products\_template.tmpl products\_template\_htmlmail.tmpl Description Example templates in English. '..\_htmlmail.tmpl' is a HTML-wrap for the HTML-emails sent. .. _products-template-dk-tmpl: products\_template\_dk.tmpl """"""""""""""""""""""""""" .. container:: table-row File products\_template\_dk.tmpl Description Example template in Danish .. _example-template-bill-de-tmpl: example\_template\_bill\_de.tmpl """""""""""""""""""""""""""""""" .. container:: table-row File example\_template\_bill\_de.tmpl Description bananaguard.de template with examples for bill and delivery sheet in German .. _products-template-fi-tmpl: products\_template\_fi.tmpl """"""""""""""""""""""""""" .. container:: table-row File products\_template\_fi.tmpl Description Example template in Finnish .. _products-template-fr-tmpl: products\_template\_fr.tmpl """"""""""""""""""""""""""" .. container:: table-row File products\_template\_fr.tmpl Description Example template in French .. _products-template-se-tmpl: products\_template\_se.tmpl """"""""""""""""""""""""""" .. container:: table-row File products\_template\_se.tmpl Description Example template in Swedish .. _product-detail-tmplproduct-proefpakketten-tmplshop-a-box-tmplproduct: product\_detail.tmplproduct\_proefpakketten.tmplshop-a-box.tmplproduct """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .. container:: table-row File product\_detail.tmplproduct\_proefpakketten.tmplshop-a-box.tmplproduct en.tmpl Description Example templates for gift certificates, creditpoints and voucher system in Dutch .. _products-css-en-html: products\_css\_en.html """""""""""""""""""""" .. container:: table-row File products\_css\_en.html Description CSS styled template. Use this if you need a barrier-free shop. .. _payment-DIBS-php: payment\_DIBS.php """"""""""""""""" .. container:: table-row File payment\_DIBS.php Description Script for interfacing with DIBS (Danish Internet Payment System) in Denmark. You can reach them at http://www.architrade.com/uk/. .. _payment-DIBS-template-tmpl: payment\_DIBS\_template.tmpl """""""""""""""""""""""""""" .. container:: table-row File payment\_DIBS\_template.tmpl Description Template file for DIBS payment. .. ###### END~OF~TABLE ###### [tsref:(cObject).TEST] .. _Description: Description ^^^^^^^^^^^ Built-in shopping basket and products display within TYPO3. Has a clearing interface which lets you write your own implementation with existing payment-gateways. Currently there's an implementation with DIBS in Denmark, found at `www.architrade.dk `_ . .. _Reference: Reference ^^^^^^^^^ .. ### BEGIN~OF~TABLE ### .. _templateFile-Constants-file-templateFile: templateFile *Constants:* file.templateFile """"""""""""""""""""""""""""""""""""""""""" .. container:: table-row Property templateFile *Constants:* file.templateFile Data type resource Description The template-file. See example in 'tt\_products/template/products\_template.tmpl' You can also specify a CODE. (siehe display mode) **Example:** :: plugin.tt_products.templateFile = EXT:tt_products/template/example_template_bill_de.tmpl plugin.tt_products.templateFile.LIST = EXT:tt_products/template/products_template_dk.tmpl Default .. _templateSuffix-Setup: templateSuffix - *Setup* """"""""""""""""""""""""" .. container:: table-row Property templateSuffix - *Setup* Data type string Description This suffix is appended to all template's major subparts. Default .. _fe: fe "" .. container:: table-row Property fe Data type boolean Description If FE output is used. You can turn the FE output off. This is usefull for a callback script (see CODE SCRIPT). No template file is needed in this case. Default TRUE .. _pid-list: pid\_list """"""""" .. container:: table-row Property pid\_list Data type string /stdWrap Description The pids from where to fetch categories, products and so on. Default is the current page. Accepts multiple pid's separated by comma. Default .. _defaultCode: defaultCode """"""""""" .. container:: table-row Property defaultCode Data type string Description The default code (see below) if the value is empty. By default it's not set and a help screen will appear. You should not set anything here. **Example:** :: plugin.tt_products.defaultCode = HELP Default .. _code: code """" .. container:: table-row Property code Data type string /stdWrap Description see chapter 'display mode' Default HELP .. _defaultArticleID: defaultArticleID """""""""""""""" .. container:: table-row Property defaultArticleID Data type int+ Description The default article uid number for the single display is used when the link to the script did not contain a 'tt\_products[article]' parameter. Default .. _defaultProductID: defaultProductID """""""""""""""" .. container:: table-row Property defaultProductID Data type int+ Description The default product uid number for the single display is used when the link to the script did not contain a 'tt\_products[product]' parameter. Set this default value when you get an error message like:“GET/POST var 'tt\_products[product]' was missing.” Default .. _defaultCategoryID: defaultCategoryID """"""""""""""""" .. container:: table-row Property defaultCategoryID Data type int+ Description The default category uid number for the list display is used when the link to the script did not contain a 'tt\_products[cat]' parameter. Use this if you want only products of this category displayed in the list view as a default. Default .. _defaultPageID: defaultPageID """"""""""""" .. container:: table-row Property defaultPageID Data type int+ Description The default category uid number for the list display is used when the link to the script did not contain a 'tt\_products[pid]' parameter. Use this if you use pages as categories and want only products of this category displayed in the list view as a default. Default .. _defaultDAMCategoryID: defaultDAMCategoryID """""""""""""""""""" .. container:: table-row Property defaultDAMCategoryID Data type int+ Description See defaultCategoryID, but for DAM categories and the 'tt\_products[damcat]' parameter. Default .. _productDAMCategoryID: productDAMCategoryID """""""""""""""""""" .. container:: table-row Property productDAMCategoryID Data type int+ Description DAM category of products to be used in DAM lists. Default .. _rootAddressID: rootAddressID """"""""""""" .. container:: table-row Property rootAddressID Data type int+ Description The upper most address ID from where you want to start to list addresses. Default .. _rootCategoryID: rootCategoryID """""""""""""" .. container:: table-row Property rootCategoryID Data type int+ Description The upper most category ID from where you want to start to list categories. Default .. _rootDAMCategoryID: rootDAMCategoryID """"""""""""""""" .. container:: table-row Property rootDAMCategoryID Data type int+ Description The upper most DAM category ID from where you want to start to list DAM categories. Default .. _rootPageID: rootPageID """""""""" .. container:: table-row Property rootPageID Data type int+ Description The upper most page ID from where you want to start to list them as categories. Default .. _recursive: recursive """"""""" .. container:: table-row Property recursive Data type int+ Description Number of recursive sublevels of pids to select tt\_products from in lists. Default 99 .. _domain: domain """""" .. container:: table-row Property domain Data type string Description The url of the shop. If not set, it will be detected automatically. Will replace ###DOMAIN### markers. Default .. _altMainMarkers: altMainMarkers """""""""""""" .. container:: table-row Property altMainMarkers Data type *(array of strings)* Description Lets you specify alternative subpart markers for the various main template designs in the shopping basket system. This is the list of main subparts you can override: **Properties:** :: TRACKING_WRONG_NUMBER TRACKING_ENTER_NUMBER BASKET_REQUIRED_INFO_MISSING BASKET_TEMP ITEM_SINGLE_DISPLAY_RECORDINSERT ITEM_SINGLE_DISPLAY ITEM_SEARCH ITEM_LIST_TEMPLATE ITEM_LIST_GIFTS_TEMPLATE ITEM_SEARCH_EMPTY BASKET_TEMPLATE BASKET_INFO_TEMPLATE BASKET_PAYMENT_TEMPLATE BASKET_ORDERCONFIRMATION_TEMPLATE EMAIL_PLAINTEXT_TEMPLATE BILL_TEMPLATE DELIVERY_TEMPLATE /+ stdWrap **Example:** :: altMainMarkers.BASKET_TEMPLATE = BASKET_DESIGN2 altMainMarkers.BASKET_TEMPLATE.wrap = ### | ### This example changes the main subpart marker for the regular basket display from the default ###BASKET\_TEMPLATE### to the custom supplied design ###BASKET\_DESIGN2### (found in the same template HTML-file) Default .. _stdSearchFieldExt: stdSearchFieldExt """"""""""""""""" .. container:: table-row Property stdSearchFieldExt Data type *list of fields* Description Search fields Default internal list is title,subtitle,note. You can specify your default fields here. Default .. _limit: limit """"" .. container:: table-row Property limit Data type int+ Description Max items displayed. The maximum number of items displayed on one page. Default 50 .. _limitImage: limitImage """""""""" .. container:: table-row Property limitImage Data type int+ Description Max image items displayed. The maximum number of images for one item displayed on the list view. **Deprecated.** See article/product configuration Use this instead: :: plugin.tt_products.conf.tt_products.ALL.limitImage = 1 Default 3 .. _limitImageSingle: limitImageSingle """""""""""""""" .. container:: table-row Property limitImageSingle Data type int+ Description The maximum number of images for one item displayed on the single view. **Deprecated.** See article/product configuration Use this instead: :: plugin.tt_products.conf.tt_products.SINGLE.limitImage = 1 Default 10 .. _usePageContentImage: usePageContentImage """"""""""""""""""" .. container:: table-row Property usePageContentImage Data type boolean Description **Deprecated.** See article/product configuration Use this instead: :: plugin.tt_products.conf.tt_products.ALL.fetchImage { type = foreigntable table = tt_content } Default .. _separateImage: separateImage """"""""""""" .. container:: table-row Property separateImage Data type boolean Description Normally all images are displayed together. With separateImage=on you can use a ###PRODUCT\_IMAGE3### for each image number (starting with 1) separatly. Default .. _image: image """"" .. container:: table-row Property image Data type IMAGE cObject Description The image configuration in single display Default .. _listImage: listImage """"""""" .. container:: table-row Property listImage Data type IMAGE cObject Description The image configuration in list display :: listImage > listImage { altImgResource.import = uploads/media/ altImgResource.import.field = media altImgResource.import.listNum = 0 altText.data = field:title } That way, attached images are not copied to and displayed from */typo3temp/* (which gives trouble with transparant backgrounds) but directly linked from /uploads/pics/. The line with altText leads to the drawing of an alternative text. Default .. _listImageHasChilds: listImageHasChilds """""""""""""""""" .. container:: table-row Property listImageHasChilds Data type IMAGE cObject Description DAM only: The image configuration in list display if there is a filter for a category on the page and this category has childs. :: listImage > listImage { altImgResource.import = uploads/media/ altImgResource.import.field = media altImgResource.import.listNum = 0 altText.data = field:title } see listImage Default .. _basketImage: basketImage """"""""""" .. container:: table-row Property basketImage Data type IMAGE cObject Description The image configuration in basket display Default .. _datasheetIcon: datasheetIcon """"""""""""" .. container:: table-row Property datasheetIcon Data type IMAGE cObject Description The image icon for the datasheet. Replaces ###ICON\_DATASHEET### Default .. _basketPic: basketPic """"""""" .. container:: table-row Property basketPic Data type string Description URL link to the basket image Default .. _clickIntoBasket: clickIntoBasket """"""""""""""" .. container:: table-row Property clickIntoBasket Data type boolean Description If set you will be directed into the basket page after putting a product into the basket. This only works if PIDbasket has been set. Default .. _clickIntoList: clickIntoList """"""""""""" .. container:: table-row Property clickIntoList Data type boolean Description If set you will be directed into the list page from the single view after putting a product into the basket. This only works if PIDlistDisplay has been set. Default .. _clickIntoSubmenu: clickIntoSubmenu """""""""""""""" .. container:: table-row Property clickIntoSubmenu Data type boolean Description **Deprecated.** See onlyChildsOfCurrent of the category configuration If set, the submenues in the LISTCAT category list will only be listed for the current category. Default .. _basketMaxQuantity: basketMaxQuantity """"""""""""""""" .. container:: table-row Property basketMaxQuantity Data type int+ / string Description The maximum integer value for the quantity of an item in the basket.'inStock': Only the number of items which are currently in stock can be put into the basket. 'creditpoint': Items can only be put into the basket if the FE user has enough credit points. Default 100000 .. _quantityIsFloat: quantityIsFloat """"""""""""""" .. container:: table-row Property quantityIsFloat Data type boolean Description If set the basket count can be a float value. Default .. _noImageAvailable: noImageAvailable """""""""""""""" .. container:: table-row Property noImageAvailable Data type resource Description The image file displayed if no image was attached to a product. This image is processed by the IMAGE cObject which is active in the actual display of that image. That is, one of the above IMAGE cObjects. Default .. _displayListCatHeader: displayListCatHeader """""""""""""""""""" .. container:: table-row Property displayListCatHeader Data type boolean Description Display **Category** Header in list If this option is set, the category headers (page titles) will automatically be displayed in the product lists. This is not always convenient because you might have chosen a header-title for the "list" content element. Default 1 .. _displayBasketCatHeader: displayBasketCatHeader """""""""""""""""""""" .. container:: table-row Property displayBasketCatHeader Data type boolean Description Display Category Header in basket. If this option is set, the category headers (page titles) will automatically be displayed in the basket lists. Default 0 .. _displayCatListType: displayCatListType """""""""""""""""" .. container:: table-row Property displayCatListType Data type string Description Define the HTML main tag for the display of the categories in the category list view. Use the new plugin 'Categories: menu' instead of the former displayCatListType=ul. Default ul .. _substitutePagetitle: substitutePagetitle """"""""""""""""""" .. container:: table-row Property substitutePagetitle Data type Int+ Description Set the page title in single view 1 … product title 2 … product subtitle 12 … product title and subtitle 21 … product subtitle and title 3 … bread crumb Default .. _displayBasketColumns: displayBasketColumns """""""""""""""""""" .. container:: table-row Property displayBasketColumns Data type int+ Description **Deprecated.** see table configuration: displayColumns Number of columns for the LIST, SEARCH listing of items in a table. You have to adapt your template using special template markers. The ITEM\_SINGLE\_PRE\_HTML and ITEM\_SINGLE\_POST\_HTML must surround your - tags, so the table will be created correctly. **Example:** :: ###ITEM_SINGLE_PRE_HTML### ###GW1B######PRODUCT_TITLE######GW1E###
###PRODUCT_IMAGE###
###GW1B### item count: ###GW1E###

###ITEM_SINGLE_POST_HTML### Default .. _CSS: CSS """ .. container:: table-row Property CSS Data type *see below* Description Cascading Stylesheets settings Default .. _conf: conf """" .. container:: table-row Property conf Data type *see below* Description configurations of the tables Default .. _NoSingleViewOnList: NoSingleViewOnList """""""""""""""""" .. container:: table-row Property NoSingleViewOnList Data type boolean Description Usually you get the link to the single item view on the display page of the LIST code. If you however want to create your own pages for single view with SINGLE code you must set this to 1. Default .. _itemMarkerArrayFunc: itemMarkerArrayFunc """"""""""""""""""" .. container:: table-row Property itemMarkerArrayFunc Data type function-name Description Every time a product is displayed be it in the basket, list or single view, the method getItemMarkerArray() in tx\_ttproducts\_marker is called. This function fills in and returns an array, so called markerArray(), with key/values for template substitution. If you enter a valid function name here (see datatype 'function-name' for details!) that array will be passed to that function as the second parameter. The first parameter will be the TypoScript properties to itemMarkerArrayFunc. **Parent PHP-Object reference:** .parentObj property is :underline:`hardcoded` to be a reference to the calling user\_products object (PHP). **Example:** (provided that a function or class is included!) :: itemMarkerArrayFunc = user_addFieldsMarkerArr itemMarkerArrayFunc.simpleOption = 1 Default .. _PIDitemDisplay: PIDitemDisplay """""""""""""" .. container:: table-row Property PIDitemDisplay Data type int+/ *Array of integers* Description PID for single item display. If you want a certain page to be used for display of item details, please enter the PID (page-uid) here. If you set the type to sql, you can use conditions using several lines. The where string can contain the AND condition. The pid for the first fulfilled condition will be returned. :: PIDitemDisplay { 10.type = sql 10.where = color=red 10.pid = 142 20.type = sql 20.where = color=white 20.pid = 143 } If you set the type to pid then the pid of the record will be used. :: PIDitemDisplay { 10.type = pid } Default .. _PIDlistDisplay: PIDlistDisplay """""""""""""" .. container:: table-row Property PIDlistDisplay Data type int+/ *Array of integers* Description PID for the item list display Similar to PIDitemDisplay, however the category table is used here. Default .. _PIDsearch: PIDsearch """"""""" .. container:: table-row Property PIDsearch Data type int+ Description PID for search page. If you want all product searches to go to a specific page, enter the PID it here! NOTE: If you set this PID, all searchqueries will (must) be handled with a list content element with the display mode "Products: search" on that page. Default .. _PIDbasket: PIDbasket """"""""" .. container:: table-row Property PIDbasket Data type int+ Description PID for the basket page. If you want ever change the number of items anywhere to go to a specific page (eg. the shopping basket page), enter the PID here. Default .. _PIDstoreRoot: PIDstoreRoot """""""""""" .. container:: table-row Property PIDstoreRoot Data type int+ Description PID for store root. This is the PID of the rootPage of the store. If not set the store will operate over all pages from the root of the site. But if the site has many pages, performance may improve. You should better set pid\_list instead of it. Default .. _PID-sys-products-orders: PID\_sys\_products\_orders """""""""""""""""""""""""" .. container:: table-row Property PID\_sys\_products\_orders Data type int+ Description PID for the sys\_products\_orders records. By default they will get the pid of the payment (finalize) page. Default .. _PIDGiftsTable: PIDGiftsTable """"""""""""" .. container:: table-row Property PIDGiftsTable Data type int+ Description PID for the tt\_products\_gifts table. The gift orders are stored here. Default .. _PIDinfo: PIDinfo """"""" .. container:: table-row Property PIDinfo Data type int+ Description PID for the info page where name and address is entered. Default .. _PIDpayment: PIDpayment """""""""" .. container:: table-row Property PIDpayment Data type int+ Description PID for the payment page where name where the address is checked and the order is confirmed by the customer. You could change to a payment gateway from here. Default .. _PIDfinalize: PIDfinalize """"""""""" .. container:: table-row Property PIDfinalize Data type int+ Description PID for the finalization page afther the user has confirmed the order data. The order will get stored here. Default .. _PIDthanks: PIDthanks """"""""" .. container:: table-row Property PIDthanks Data type int+ Description PID for the thanks page. BASKET\_ORDERTHANKS\_TEMPLATE will be used. You must not set PIDfinalize if you use this. Default .. _PIDtracking: PIDtracking """"""""""" .. container:: table-row Property PIDtracking Data type int+ Description PID for the order tracking Default .. _PIDbilling: PIDbilling """""""""" .. container:: table-row Property PIDbilling Data type int+ Description PID for the generation of the bill Default .. _PIDdelivery: PIDdelivery """"""""""" .. container:: table-row Property PIDdelivery Data type int+ Description PID for the generation of the delivery sheet Default .. _PIDmemo: PIDmemo """"""" .. container:: table-row Property PIDmemo Data type int+ Description The ID of the memo page Default .. _PIDagb: PIDagb """""" .. container:: table-row Property PIDagb Data type int+ Description The PID of a page with the general trading conditions (“AGB” in germany) Only if this page id is set the AGB check will be active. Default 0 .. _PIDuserFolder: PIDuserFolder """"""""""""" .. container:: table-row Property PIDuserFolder Data type int+ Description The sysfolder, where the new users should be stored Default 116 .. _pidsRelatedProducts: pidsRelatedProducts """"""""""""""""""" .. container:: table-row Property pidsRelatedProducts Data type int+ Description Allowed pages for related products. Default .. _pidsAddresses: pidsAddresses """"""""""""" .. container:: table-row Property pidsAddresses Data type int+ Description Allowed pages for addresses Default .. _UIDstore: UIDstore """""""" .. container:: table-row Property UIDstore Data type int+ Description comma separated list of UIDs of the tx\_party\_addresses table (or fe\_users) with the data of the shop. Default .. _paymentActivity: paymentActivity """"""""""""""" .. container:: table-row Property paymentActivity Data type string Description When the payment with a payment script shall be executed.Possible values: payment, finalize, verify Default finalize .. _advanceOrderNumberWithInteger: advanceOrderNumberWithInteger """"""""""""""""""""""""""""" .. container:: table-row Property advanceOrderNumberWithInteger Data type int+ Description If this value is set, then each time a new order is created the order- number counter will be incremented with a random number between [first-integer] and [second integer] to cheat a little. **Example:** :: 1,10 (This will increment the counter randomly between 1 and 10) 5,5 (This will increment the counter with 5 each time) Default .. _alwaysAdvanceOrderNumber: alwaysAdvanceOrderNumber """""""""""""""""""""""" .. container:: table-row Property alwaysAdvanceOrderNumber Data type boolean Description If set then the order number will always get increased and the empty order numbers are not reused. You have to set this if you use a payment script to pay via a payment system which does not accept duplicate order numbers. Default .. _alwaysUpdateOrderAmount: alwaysUpdateOrderAmount """"""""""""""""""""""" .. container:: table-row Property alwaysUpdateOrderAmount Data type boolean Description If set then the entered order amount will always be updated and not increased by the entered number. Default 1 .. _parseFunc: parseFunc """"""""" .. container:: table-row Property parseFunc Data type ->parseFunc not used with 'CSS styled content' Description If the extension 'CSS styled content' has been installed, you have to make your settings in lib.parseFunc\_RTE and not here. The product details are parsed by these properties. So if e.g. you want ot allow HTML-tags to create a table in the Note field you have to set the parseFunc.allowTags or use the denyTags.To make RTE working with HTML you have to set the following into the root page template. **Example:** :: keepNonMatchedTags = 1 RTE.default.proc.preserveTables = 1 **Example:** :: parseFunc.allowTags = table,tr,td,b,i,u,a,img,br,div,center,pre,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,h1,h2,h3,h4,h5,h6 parseFunc.denyTags = * Default styles.content.parseFunc .. _categoryHeader: categoryHeader """""""""""""" .. container:: table-row Property categoryHeader Data type cObject Description Generates the category header. **Example:** :: categoryHeader = TEXT categoryHeader.current = 1 Default .. _breadcrumb: breadcrumb """""""""" .. container:: table-row Property breadcrumb Data type cObject Description Generates a breadcrumb line. **Example:** :: breadcrumb = Default .. _TAXpercentage: TAXpercentage """"""""""""" .. container:: table-row Property TAXpercentage Data type double Description Sales TAX/VAT percentage. Double value (!) (means, "use . as decimal point") **Example:** :: # Danish sales TAX is 25%: TAXpercentage = 25.00 Default .. _TAXincluded: TAXincluded """"""""""" .. container:: table-row Property TAXincluded Data type boolean Description Set this, if TAX *is* included in the database prices! ( ... and of course: Clear this, if TAX *is not* included in the database prices and should be added in the display of items) All profieldLinkcessing will take this flag into account and calculate prices accordingly. Default 1 .. _TAXrates: TAXrates """""""" .. container:: table-row Property TAXrates Data type string Description Comma separated list of tax rates. The first will be taken as tax A, the second as tax B aso. Default .. _TAXmode: TAXmode """"""" .. container:: table-row Property TAXmode Data type int+ Description tax mode 1: The net sums are added first. The tax is added on the final total net sum. 2: The gross price is calculated for every product. The total sum is calculated on the single gross prices. Default 1 .. _priceDec: priceDec """""""" .. container:: table-row Property priceDec Data type int+ Description Price decimals Default .. _priceDecPoint: priceDecPoint """"""""""""" .. container:: table-row Property priceDecPoint Data type string Description Price decimal point Default .. _priceThousandPoint: priceThousandPoint """""""""""""""""" .. container:: table-row Property priceThousandPoint Data type string Description Price Thousand point Enter the thousand separator, if any. Default .. _noZeroDecimalPoint: noZeroDecimalPoint """""""""""""""""" .. container:: table-row Property noZeroDecimalPoint Data type boolean Description If set then no decimal point is shown for integers. Default .. _priceNoReseller: priceNoReseller """"""""""""""" .. container:: table-row Property priceNoReseller Data type int+ *S* Description Price number for reseller, which can only be 2 at the moment. The price2 will however only be taken when its value is greater than 0. Here is the way to get the price2 for a special user group: **Example:** :: [usergroup = 1] priceNoReseller = 2 [global] ... Default .. _percentDec: percentDec """""""""" .. container:: table-row Property percentDec Data type int+ Description Number of shown decimals of percentage values Default .. _currencySymbol: currencySymbol """""""""""""" .. container:: table-row Property currencySymbol Data type string Description Currency symbol. Used in shop administration. **Example:** :: EUR DKR USD $ Default .. _lockLoginUserInfo: lockLoginUserInfo """"""""""""""""" .. container:: table-row Property lockLoginUserInfo Data type boolean Description If set and a user is logged in, the address info of that fe\_user gets filled in as billing address of the user. It is not possible to change this data. Default .. _editLockedLoginInfo: editLockedLoginInfo """"""""""""""""""" .. container:: table-row Property editLockedLoginInfo Data type boolean Description If set and lockLoginUserInfo is set, then the filled in data is still editable for the order. You have to set the input HTML tags for this. Default .. _loginUserInfoAddress: loginUserInfoAddress """""""""""""""""""" .. container:: table-row Property loginUserInfoAddress Data type boolean Description If lockLoginUserInfo is set, this switch makes that the address field is filled in from address, country, zip and city of the fe\_user Default .. _requiredInfoFields: requiredInfoFields """""""""""""""""" .. container:: table-row Property requiredInfoFields *setup* Data type *list or array of string* Description List of the fields which are re‑quired in the address information This example gives you all possibilities. **Example:** :: requiredInfoFields = name,address,telephone,fax,email,company,city,zip,state,country The subvalues 'billing' and 'delivery' are possible. **Example:** :: requiredInfoFields.delivery = name,address Default .. _orderBy: orderBy """"""" .. container:: table-row Property orderBy Data type string Description **Deprecated.** See Article/Product configuration Use this instead: :: plugin.tt_products.conf.tt_products.ALL.orderBy = title Default .. _orderByCategoryTitle: orderByCategoryTitle """""""""""""""""""" .. container:: table-row Property orderByCategoryTitle Data type boolean Description **Deprecated.** Use this instead: :: plugin.tt_products.conf.tt_products_cat.ALL.orderBy = title Default .. _orderByItemNumberSg: orderByItemNumberSg """"""""""""""""""" .. container:: table-row Property orderByItemNumberSg Data type boolean Description **Deprecated.** Use this instead: :: plugin.tt_products.conf.tt_products.SINGLE.orderBy = itemnumber Default .. _orderNumberPrefix: orderNumberPrefix """"""""""""""""" .. container:: table-row Property orderNumberPrefix Data type string Description Prefix to the order numbers. Max 10 chars. If this string starts with '%' then the rest will be interpreted as a PHP date format. Default .. _orderEmail: orderEmail """""""""" .. container:: table-row Property orderEmail Data type *array* Description This defines additional confirmation emails containing suffixes, sender and receiver email addresses. from ... 'shop' will fetch orderEmail\_from, 'customer' will fetch the customer email address. to ... email of the receiver suffix ... suffix to the '###EMAIL\_PLAINTEXT\_TEMPLATE\_###' subpart. returnPath ... email address to use in the case of a failure to send the email **Example** : :: plugin.tt_products.orderEmail { 10.suffix = factory 10.from = shop 10.to = seller1@webshop-typo3.com 10.attachment = bill 20.suffix = logistic 20.from = customer 20.to = seller2@webshop-typo3.com 20.attachment = bill } It is possible to send confirmation emails to the email address stored in a foreign table and where a foreign key has been added to the table fe\_users. **Example** : :: plugin.tt_products.orderEmail { 10000.suffix = shop 10000.from = customer 10000.to { table = fe_users field = key_field foreign_table = my_table foreign_field = my_table_key_field foreign_email_field = my_table_email } } A SQL comparison will be made to fetch the email address: :: SELECT my_table_key_field FROM my_table WHERE my_table_key_field = $content_of_fe_users_key_field; Default .. _orderEmail-bcc: orderEmail\_bcc """"""""""""""" .. container:: table-row Property orderEmail\_bcc Data type string Description BCC for the shop admin's order confirmation Default .. _orderEmail-from: orderEmail\_from """""""""""""""" .. container:: table-row Property orderEmail\_from Data type string Description From email address for the confirmation email to customer Default .. _orderEmail-fromName: orderEmail\_fromName """""""""""""""""""" .. container:: table-row Property orderEmail\_fromName Data type string Description From name for the confirmation email to customer. Default .. _orderEmail-to: orderEmail\_to """""""""""""" .. container:: table-row Property orderEmail\_to Data type *list of email-addresses* Description Comma separated list of recipients of the order email. Shop and administrator/supervisor email addresses go here! Default .. _orderEmail-toAddress: orderEmail\_toAddress """"""""""""""""""""" .. container:: table-row Property orderEmail\_toAddress Data type boolean Description If set, then the order email is sent to all addresses which are connected to the products in the basket. Default .. _orderEmail-radio: orderEmail\_radio """"""""""""""""" .. container:: table-row Property orderEmail\_radio Data type *array of radio button number and email adresses* Description Comma separated list of recipients of the order email if a radio box has been selected. The number is the radio box and the second number is the selected value. **Example:** :: orderEmail_radio { 1.2 = inform@mytypo3site.de } Default .. _orderEmail-toDelivery: orderEmail\_toDelivery """""""""""""""""""""" .. container:: table-row Property orderEmail\_toDelivery Data type boolean Description If set, the email notification will be sent to the delivery email address and not to the billing email address. Default .. _orderEmail-subject: orderEmail\_subject """"""""""""""""""" .. container:: table-row Property orderEmail\_subject Data type string Description Contents of the subject line if the first line in ###EMAIL\_PLAINTEXT\_TEMPLATE### is empty. Default .. _orderEmail-returnPath: orderEmail\_returnPath """""""""""""""""""""" .. container:: table-row Property orderEmail\_returnPath Data type string Description Fills the 'Return-Path' of the email header. If the email of the recipient is invalid then the message will be sent to this address. Default .. _orderEmail-htmlmail: orderEmail\_htmlmail """""""""""""""""""" .. container:: table-row Property orderEmail\_htmlmail Data type boolean / string Description If set, the order confirmation email is sent as HTMLIf orderEmail\_htmlmail.removeImagesWithPrefix is set, then the images and their HTML tags will not be sent in an email. Default .. _orderEmail-apostrophe: orderEmail\_apostrophe """""""""""""""""""""" .. container:: table-row Property orderEmail\_apostrophe Data type string Description Use these characters as apostrophe in the order email subject. Default .. _orderEmail-order2: orderEmail\_order2 """""""""""""""""" .. container:: table-row Property orderEmail\_order2 Data type boolean Description If set, the shop admin receives 2 email order confirmations. The same email like the customer with EMAIL\_PLAINTEXT\_TEMPLATE and also the one only for shop admins EMAIL\_PLAINTEXT\_TEMPLATE\_SHOP if available. Default .. _email-notify-default: email\_notify\_default """""""""""""""""""""" .. container:: table-row Property email\_notify\_default Data type boolean Description If email-notification to the delivery email address of the customer is enabled by default for tracking (he can change it himself in the tracking module later) Default .. _statusCodes: statusCodes """"""""""" .. container:: table-row Property statusCodes Data type *Array of integers* Description Status codes used in the tracking module. Numbers above 100 removes the order from the tracklist. Number zero is the status of a non-finalized order (and non-finalized orders in the database may by time be regarded as garbage...) Numbers of 50-59 is available for the customer to choose from. Number 1 is reserved to be selected when an order goes from zero to 1 because it's confirmed. Number 1 cannot be selected by shop admin.These will be written into ###STATUS\_OPTIONS### markers. **Example:** :: statusCodes { 1 = Order submitted by user 2 = Order is received and accepted by store 10 = Shop is awaiting goods from third-party 11 = Shop is awaiting customer payment 12 = Shop is awaiting material from customer 13 = Order has been payed 20 = Goods shipped to customer 21 = Gift certificates shipped to customer 30 = Other message from store 50 = Customer request for cancelling 51 = Message from customer to shop 60 = Send gift certificate message to receiver 100 = Order shipped and closed 101 = Order closed 200 = Order cancelled } Default .. _update-code: update\_code """""""""""" .. container:: table-row Property update\_code Data type string Description The 'password' used by the administrator of the shop to go into the tracking system in the front end. The password form field will appear if a BE\_USER is logged in, but this password is still needed. Default password .. _statusDate-stdWrap: statusDate\_stdWrap """"""""""""""""""" .. container:: table-row Property statusDate\_stdWrap Data type ->stdWrap Description stdWrap for status date **Example:** :: statusDate_stdWrap.strftime = %d-%m-%Y %H:%M Default .. _orderDate-stdWrap: orderDate\_stdWrap """""""""""""""""" .. container:: table-row Property orderDate\_stdWrap Data type ->stdWrap Description stdWrap for the order date **Example:** :: orderDate_stdWrap.strftime = %d-%m-%Y Default .. _usebyDate-stdWrap: usebyDate\_stdWrap """""""""""""""""" .. container:: table-row Property usebyDate\_stdWrap Data type ->stdWrap Description stdWrap for the useby date Default .. _cardEndDate-stdWrap: cardEndDate\_stdWrap """""""""""""""""""" .. container:: table-row Property cardEndDate\_stdWrap Data type ->stdWrap Description stdWrap for credit card end time date Default .. _displayCurrentRecord: displayCurrentRecord """""""""""""""""""" .. container:: table-row Property displayCurrentRecord Data type boolean Description If set, certain settings are manipulated in order to let the script render a single item - the $cObj->data. If this setting is set, the subpart marked ###ITEM\_SINGLE\_DISPLAY\_RECORDINSERT### will be used instead of the regular subpart ###ITEM\_SINGLE\_DISPLAY### if it is found. Default .. _externalProcessing: externalProcessing """""""""""""""""" .. container:: table-row Property externalProcessing Data type cObject Description This cObject may be used to call a function which manipulates the shopping basket. This manipulation could be based on settings in an external order system. The output is included in the top of the order (HTML) on the basket-page. This cObject is executed each time the main\_products method of the user\_products class in productsLib is called and it's executed before any of the main processing. See the class for details. Default .. _externalProcessing-final: externalProcessing\_final """"""""""""""""""""""""" .. container:: table-row Property externalProcessing\_final Data type cObject Description cObject for the final order confirmation template Default .. _externalFinalizing: externalFinalizing """""""""""""""""" .. container:: table-row Property externalFinalizing Data type cObject Description This cObject may be used to call a function which clears settings in an external order system. This is a sister to the above function and they should probably be used in conjunction somehow. This function is called immediately after the finalize-function has been called. For instance this function would be suitable for clearing any external basket facilitated by the .externalProcessing cObject **Note:** The output is NOT included anywhere. Default .. _wrap1: wrap1 """"" .. container:: table-row Property wrap1 Data type -> stdWrap Description Global Wrap 1. This will be splitted into the markers ###GW1B### and ###GW1E###. Don't change the input value by the settings, only wrap it in something. **Example:** :: wrap1.wrap = | Default .. _wrap2: wrap2 """"" .. container:: table-row Property wrap2 Data type -> stdWrap Description Global Wrap 2 (see above) markers ###GW2B### and ###GW2E### Default .. _wrapInBaseClass: wrapInBaseClass """"""""""""""" .. container:: table-row Property wrapInBaseClass Data type boolean *S* Description If true the output will be wrapped with

\|
Default 1 .. _wrapInCode: wrapInCode """""""""" .. container:: table-row Property wrapInCode Data type boolean *S* Description If set, then the output will be wrapped by ::
|
. 'code' will be replaced by the code of the plugin. uid will be replaced by the field 'uid' of the table tt\_products. Default 1 .. _selectColor: selectColor """"""""""" .. container:: table-row Property selectColor Data type boolean Description If true the color of a product is selectable in a select box. Default 1 .. _selectColor2: selectColor2 """""""""""" .. container:: table-row Property selectColor2 Data type boolean Description If true the 2 :sup:`nd` color of a product is selectable in a select box. Default 1 .. _selectColor3: selectColor3 """""""""""" .. container:: table-row Property selectColor3 Data type boolean Description If true the 3 :sup:`rd` color of a product is selectable in a select box. Default 1 .. _selectSize: selectSize """""""""" .. container:: table-row Property selectSize Data type boolean Description If true the size of a product is selectable in a select box. Default 1 .. _selectSize2: selectSize2 """"""""""" .. container:: table-row Property selectSize2 Data type boolean Description If true the 2 :sup:`nd` size of a product is selectable in a select box. Default 1 .. _selectSize3: selectSize3 """"""""""" .. container:: table-row Property selectSize3 Data type boolean Description If true the 3 :sup:`rd` size of a product is selectable in a select box. Default 1 .. _selectDescription: selectDescription """"""""""""""""" .. container:: table-row Property selectDescription Data type boolean Description If true the description of a product is selectable in a select box. Default 1 .. _selectGradings: selectGradings """""""""""""" .. container:: table-row Property selectGradings Data type boolean Description If true the gradings of a product are selectable in a select box. Default 1 .. _selectMaterial: selectMaterial """""""""""""" .. container:: table-row Property selectMaterial Data type boolean Description If true the material of a product are selectable in a select box. Default 1 .. _selectQuality: selectQuality """"""""""""" .. container:: table-row Property selectQuality Data type boolean Description If true the quality of a product are selectable in a select box. Default 1 .. _color1: color1 """""" .. container:: table-row Property color1 Data type string /stdWrap Description Value for ###GC1### marker (Global color 1) Default .. _color2: color2 """""" .. container:: table-row Property color2 Data type string /stdWrap Description Value for ###GC2### marker (Global color 2) Default .. _color3: color3 """""" .. container:: table-row Property color3 Data type string /stdWrap Description Value for ###GC3### marker (Global color 3) Default .. _nl2brNote: nl2brNote """"""""" .. container:: table-row Property nl2brNote Data type boolean Description If true the line feeds in the note field are replaced by
. Default 1 .. _useArticles: useArticles """"""""""" .. container:: table-row Property useArticles Data type integer Description - 0: If you do not want to use the articles table then this must remain 0. - 1: If you want to use products in different variants and have special prices for them in the articles table, then you have to set this to 1. All variants must be entered for the products and the articles. The article of a product is chosen if it contains all the selected variants. The instock of the articles table will be used instead of the products table. Articles are sold together with their related product. - 2: No variants are used. No product is assigned to an article. The articles are sold without products. - 3: The variants of the product need not be entered but are taken from the articles assigned to a product. No product is assigned to an article, but many articles are assigned to a product with the possibility of additional prices. Each article can have a part of the variants. If more than one article is added and can be part of the variants, then the additional prices are added and the text fields are chained. Default .. _priceTagObj: priceTagObj """"""""""" .. container:: table-row Property priceTagObj Data type IMAGE cObject Description Image for the display of the price Default .. _usePriceTag: usePriceTag """"""""""" .. container:: table-row Property usePriceTag Data type boolean Description If true, the priceTagObj will be used. If false, the text will be displayed. Default 0 .. _useStaticInfoCountry: useStaticInfoCountry """""""""""""""""""" .. container:: table-row Property useStaticInfoCountry Data type boolean Description If true the short fe\_users static\_info\_country field will be used for country instead of the country field. Default 0 .. _useStaticTaxes: useStaticTaxes """""""""""""" .. container:: table-row Property useStaticTaxes Data type boolean Description If true, the tax will be determined from the country and region by the extension static\_info\_tables\_taxes. UIDstore must be set. Default 0 .. _whereGift: whereGift """"""""" .. container:: table-row Property whereGift Data type string Description This SQL where clause defines which products will be treated as gifts. Default .. _whereGiftService: whereGiftService """""""""""""""" .. container:: table-row Property whereGiftService Data type string Description This SQL where clause defines which products will be treated as gift services. Default .. _max-note-length: max\_note\_length """"""""""""""""" .. container:: table-row Property max\_note\_length Data type int+ Description **Deprecated.** See Article/Product configuration Use this instead: :: plugin.tt_products.conf.tt_products.LIST { field { note = TEXT note.postUserFunc = tx_pmkhtmlcrop->htmlCrop note.postUserFunc.htmlCrop = 9 | ... More } } formerly: In the list view: The item note will be cut after max\_note\_length characters, and three dots are added... This can be dangerous if you use html in your product notes, because a tag could stay open and the following items look ugly Default 10000 .. _specialPreparation: specialPreparation """""""""""""""""" .. container:: table-row Property specialPreparation Data type string Description This text will substitute your ###PRODUCT\_SPECIAL\_PREP### markers. Default .. _createUsers: createUsers """"""""""" .. container:: table-row Property createUsers Data type Boolean Description If you set this and PIDuserFolder, for each customer that is not logged in and his email address is not listed as user already, a new frontend user will be created. An email with the username (his e-mail address) and the password will be sent to him (see ###EMAIL\_NEWUSER\_TEMPLATE###) Default 0 .. _useMd5Password: useMd5Password """""""""""""" .. container:: table-row Property useMd5Password Data type boolean Description Enable md5 password encryption. Note: If set, passwords will be encrypted. Consider to install an extension like kb\_md5fepw and the newloginbox. Default 0 .. _outputFolder: outputFolder """""""""""" .. container:: table-row Property outputFolder Data type string Description Folder where the bill and delivery sheets are created. Default fileadmin/data .. _memberOfGroup: memberOfGroup """"""""""""" .. container:: table-row Property memberOfGroup Data type int+ Description The ID of the frontend user group, the new users should be member of Default 1 .. _discountGroupName: discountGroupName """"""""""""""""" .. container:: table-row Property discountGroupName Data type string Description Name of the group for discount pricecalculation Default .. _getDiscountPrice: getDiscountPrice """""""""""""""" .. container:: table-row Property getDiscountPrice Data type boolean Description If set the discount price will be used even for normal customers without having a frontend user in the discount group. Default .. _discountFieldMode: discountFieldMode """"""""""""""""" .. container:: table-row Property discountFieldMode Data type integer Description If set the discount field in the product and category table will be used to get a reducted price for a product.Modes: 1 ... the highest discount from product and categories will be used 2 ... use the product discount if set, otherwise use the highest hierarchical category discount which is set. Default .. _AGBtarget: AGBtarget """"""""" .. container:: table-row Property AGBtarget Data type Small Description The target for the PIDagb link Default \_blank .. _AGBattachment: AGBattachment """"""""""""" .. container:: table-row Property AGBattachment Data type Resource Description If this file exists, it will be attached to the order confirmation email to the customer. The shop administrator won't receive the agb attachment, but the CSV if you enable it Default fileadmin/agb.pdf .. _GiftAttachment: GiftAttachment """""""""""""" .. container:: table-row Property GiftAttachment Data type Resource Description If this file exists, it will be attached to the order gift email to the customer. Default .. _generateCSV: generateCSV """"""""""" .. container:: table-row Property generateCSV Data type boolean Description Generates a CSV from each order. This file will be saved on the server and sent to the shop administrator per email (with the order confirmation) Default 0 .. _CSVdestination: CSVdestination """""""""""""" .. container:: table-row Property CSVdestination Data type ../csvorders/ Description The directory on the server, where the CSV files should be saved. This directory should not be accessible over http, because everyone can read your customers and their orders. So don't put this directory unter fileadmin, or rename it to something cryptical at least. Default ../csvorders/ .. _CSVfields: CSVfields """"""""" .. container:: table-row Property CSVfields Data type string Description Select which product data should be added to the CSV. By default these are all important fields except the note Default (Long, long list) .. _CSVinOneLine: CSVinOneLine """""""""""" .. container:: table-row Property CSVinOneLine Data type boolean Description If you set this to 1, all additional information (shipping, payment, address data, delivery note) will be appended to the first ordered item. This is good if you want to import this files somewhere. If you leave this at 0, the file will be formatted for best view in programs like Excel. Default 0 .. _CSVnotInEmail: CSVnotInEmail """"""""""""" .. container:: table-row Property CSVnotInEmail Data type boolean Description If set no csv file will be appended to the email. Default .. _alwaysInStock: alwaysInStock """"""""""""" .. container:: table-row Property alwaysInStock Data type boolean Description If set the stock will not get reduced if something has been bought. Default 1 .. _showNotinStock: showNotinStock """""""""""""" .. container:: table-row Property showNotinStock Data type boolean Description If set the items will be shown even if no product is in the stock. Default .. _notInStockMessage: notInStockMessage """"""""""""""""" .. container:: table-row Property notInStockMessage Data type string Description See above. This will be shown if no items are in stock and showNotinStock is set. Default Not in stock .. _warningInStockLimit: warningInStockLimit """"""""""""""""""" .. container:: table-row Property warningInStockLimit Data type int+ Description Amount of items in stock at which when reached a warning message is sent. Default .. _inStockPieces: inStockPieces """"""""""""" .. container:: table-row Property inStockPieces Data type string Description This is the unit for items inStock. Default pieces .. _newItemDays: newItemDays """"""""""" .. container:: table-row Property newItemDays Data type int+ Description In LISTNEWITEMS, the newly added items of the last n days will be showed Default 7 .. _bulkilyWarning: bulkilyWarning """""""""""""" .. container:: table-row Property bulkilyWarning Data type string Description Text for ###BULKILY\_WARNING### for bulk goods Default .. _bulkilyAddition: bulkilyAddition """"""""""""""" .. container:: table-row Property bulkilyAddition Data type int+ Description See shipping. Factor to multiply with a product which is bulkily Default .. _bulkilyFeeTax: bulkilyFeeTax """"""""""""" .. container:: table-row Property bulkilyFeeTax Data type int+ Description See shipping. Tax fee in percent for shipping of bulkily Default .. _javaScript: javaScript """""""""" .. container:: table-row Property javaScript Data type *array of integers* Description Some JavaScript which will be included for ###JAVASCRIPT\_10### markers. **Example:** :: javaScript { 10 = function addValues (a, b) { return a+b; } 20 = function multiplyValues (a, b) { return a*b; } } Default .. _payment-shipping: payment / shipping """""""""""""""""" .. container:: table-row Property payment / shipping Data type (see below) Description Configuration of payment and shipping methods, their values and costs and additional calculation scripts and payment gateways. See description below! Default .. ###### END~OF~TABLE ###### [tsref:(script).class.tt\_products.php] .. _Display-Modes-CODE: Display Modes (CODE) ^^^^^^^^^^^^^^^^^^^^ Here comes a list of the possible display types of the plugin. Code to define, what the script does. In the backend these entries are made using flexforms instead of the Codes (capital letters). Use the codefields ony in TypoScript setup. .. ### BEGIN~OF~TABLE ### .. _Products-list: Products: list """""""""""""" .. container:: table-row Display Mode Products: list CODE LIST Description listing of the products .. _Products-list-gifts: Products: list gifts """""""""""""""""""" .. container:: table-row Display Mode Products: list gifts CODE LISTGIFTS Description listing of gifts .. _Products-list-highlights: Products: list highlights """"""""""""""""""""""""" .. container:: table-row Display Mode Products: list highlights CODE LISTHIGHLIGHTS Description listing of the products marked as highlights .. _Products-list-offers: Products: list offers """"""""""""""""""""" .. container:: table-row Display Mode Products: list offers CODE LISTOFFERS Description listing of the products marked as offers .. _Products-list-new-items: Products: list new items """""""""""""""""""""""" .. container:: table-row Display Mode Products: list new items CODE LISTNEWITEMS Description listing of the new items entered to the sysfolder .. _Products-list-DAM: Products: list DAM """""""""""""""""" .. container:: table-row Display Mode Products: list DAM CODE LISTDAM Description list DAM images or media files .. _Products-single-view: Products: single view """"""""""""""""""""" .. container:: table-row Display Mode Products: single view CODE SINGLE Description single view of an article (LIST code can be used also) or GET/POST var 'tt\_products' can be set. .. _Products-search: Products: search """""""""""""""" .. container:: table-row Display Mode Products: search CODE SEARCH Description displays a search dialog for searching product .. _Products-memo: Products: memo """""""""""""" .. container:: table-row Display Mode Products: memo CODE MEMO Description memo of products .. _Currency-selector: Currency: selector """""""""""""""""" .. container:: table-row Display Mode Currency: selector CODE CURRENCY Description currency selector .. _Basket-shopping-cart-options: Basket: shopping cart, options """""""""""""""""""""""""""""" .. container:: table-row Display Mode Basket: shopping cart, options CODE BASKET Description Displays the shopping basket. The code 'BASKET' works in general but using the specific codes INFO, PAYMENT and FINALIZE, you can split out the function over multiple pages .. _Basket-overview: Basket: overview """""""""""""""" .. container:: table-row Display Mode Basket: overview CODE OVERVIEW Description a minimum basket containing only the number of items .. _Basket-collect-addresses: Basket: collect addresses """"""""""""""""""""""""" .. container:: table-row Display Mode Basket: collect addresses CODE INFO Description enter address information .. _Basket-order-review-payment: Basket: order review, payment """"""""""""""""""""""""""""" .. container:: table-row Display Mode Basket: order review, payment CODE PAYMENT Description last check and payment gateway .. _Basket-order-confirmation: Basket: order confirmation """""""""""""""""""""""""" .. container:: table-row Display Mode Basket: order confirmation CODE FINALIZE Description finalize the order and send emails – thanks page for the order .. _Orders-tracking: Orders: tracking """""""""""""""" .. container:: table-row Display Mode Orders: tracking CODE TRACKING Description to track the order state, bill and delivery .. _Orders-billing: Orders: billing """"""""""""""" .. container:: table-row Display Mode Orders: billing CODE BILL Description creates a file containing the bill .. _Orders-delivery: Orders: delivery """""""""""""""" .. container:: table-row Display Mode Orders: delivery CODE DELIVERY Description creates a file containing the delivery sheet .. _Orders-list: Orders: list """""""""""" .. container:: table-row Display Mode Orders: list CODE ORDERS Description display orders on per fe-user basis .. _General-help: General: help """"""""""""" .. container:: table-row Display Mode General: help CODE HELP Description information how to use tt\_products .. _Categories-list: Categories: list """""""""""""""" .. container:: table-row Display Mode Categories: list CODE LISTCAT Description listing of categories .. _Categories-select: Categories: select """""""""""""""""" .. container:: table-row Display Mode Categories: select CODE SELECTCAT Description categories inside of select boxes .. _Categories-menu: Categories: menu """""""""""""""" .. container:: table-row Display Mode Categories: menu CODE MENUCAT Description category menu .. _Categories-single: Categories: single """""""""""""""""" .. container:: table-row Display Mode Categories: single CODE SINGLECAT Description category single view .. _DAM-memo: DAM: memo """"""""" .. container:: table-row Display Mode DAM: memo CODE MEMODAM Description DAM memo .. _DAM-memo-overview: DAM: memo overview """""""""""""""""" .. container:: table-row Display Mode DAM: memo overview CODE MEMODAMOVERVIEW Description overview for DAM memo .. _DAM-Categories-list: DAM Categories: list """""""""""""""""""" .. container:: table-row Display Mode DAM Categories: list CODE LISTDAMCAT Description listing of DAM categories .. _DAM-Categories-select: DAM Categories: select """""""""""""""""""""" .. container:: table-row Display Mode DAM Categories: select CODE SELECTDAMCAT Description DAM categories inside of select boxes .. _DAM-Categories-menu: DAM Categories: menu """""""""""""""""""" .. container:: table-row Display Mode DAM Categories: menu CODE MENUDAMCAT Description DAM category menu .. _DAM-Categories-single: DAM Categories: single """""""""""""""""""""" .. container:: table-row Display Mode DAM Categories: single CODE SINGLEDAMCAT Description DAM category single view .. _Articles-list: Articles: list """""""""""""" .. container:: table-row Display Mode Articles: list CODE LISTARTICLES Description listing of articles .. _Addresses-list: Addresses: list """"""""""""""" .. container:: table-row Display Mode Addresses: list CODE LISTAD Description list of addresses .. _Addresses-select: Addresses: select """"""""""""""""" .. container:: table-row Display Mode Addresses: select CODE SELECTAD Description addresses inside of select boxes .. _Adresses-menu: Adresses: menu """""""""""""" .. container:: table-row Display Mode Adresses: menu CODE MENUAD Description addresses as menu .. _Adresses-single: Adresses: single """""""""""""""" .. container:: table-row Display Mode Adresses: single CODE SINGLEAD Description addresses as single view .. _Unknown-Property: ((Unknown Property)) """""""""""""""""""" .. container:: table-row Display Mode CODE SCRIPT Description execution as a PHP script without any output .. ###### END~OF~TABLE ###### .. _CSS-configuration: CSS configuration ^^^^^^^^^^^^^^^^^ The CSS id names can be set here. You have to provide a CSS file that will use these ids however. You have to provide also the name of the table in the setup. The last but one/two value will be the name of the view. It can be 'ALL', if it is valid for all views.. Views correspond to the code field: SINGLE, LIST, BASKET :: plugin.tt_products.CSS.ALL.file = EXT:ttproducts/template/tt_products_example.css .. _General: General """"""" .. ### BEGIN~OF~TABLE ### .. _file: file ~~~~ .. container:: table-row Property file Data type resource Description The CSS-file. Default .. ###### END~OF~TABLE ###### .. _Table: Table """"" :: plugin.tt_products.CSS.tt_products.LIST.row.even = 35 .. ### BEGIN~OF~TABLE ### .. _row: row ~~~ .. container:: table-row Property row Data type Description even: Cascading Stylesheets (CSS) even rows in the products display. uneven Default .. _menu: menu ~~~~ .. container:: table-row Property menu Data type string Description CSS for the menu Default .. _default: default ~~~~~~~ .. container:: table-row Property default Data type Description CSS for default entries in the list Default .. _current: current ~~~~~~~ .. container:: table-row Property current Data type Description CSS for the currently selected item in the list Default .. _itemSingleWrap: itemSingleWrap ~~~~~~~~~~~~~~ .. container:: table-row Property itemSingleWrap Data type wrap Description HTML part to replace the markers ###ITEM\_SINGLE\_PRE\_HTML### and ###ITEM\_SINGLE\_POST\_HTML### at single item level. Default
\|
or \| .. _itemRowWrap: itemRowWrap ~~~~~~~~~~~ .. container:: table-row Property itemRowWrap Data type wrap Description HTML part to replace the markers ###ITEM\_SINGLE\_PRE\_HTML### and ###ITEM\_SINGLE\_POST\_HTML### at item row level. Default empty or \| .. ###### END~OF~TABLE ###### .. _Configuration-of-Articles-Products-Categories-Pages-Addresses-and-Images: Configuration of Articles, Products, Categories, Pages, Addresses and Images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The last but one/two value will be the name of the view. It can be 'ALL', if it is valid for all views.. Views correspond to the code field: SINGLE, LIST, BASKET additional possible values are EMAIL, PAYMENT, LISTRELATED (LIST for related products) **Example:** :: plugin.tt_products.conf.tt_products_articles.LIST.generatePath.base = fileadmin/images plugin.tt_products.conf.tt_products.LIST.orderBy = sorting .. ### BEGIN~OF~TABLE ### .. _generatePath: generatePath """""""""""" .. container:: table-row Property generatePath Data type *array of string* Description path to the image folders where the images for generateImage are located. Pairs of field names and the count of the first characters to be used to form the name of the image file. type ... tablefields *fieldname* ... name of the table field **Example:** :: ALL.generatePath { type = tablefields base = fileadmin/images field.itemnumber = 2 } Default fileadmin/img .. _generateImage: generateImage """"""""""""" .. container:: table-row Property generateImage Data type *array of string* Description Pairs of field names and the count of the first characters to be used to form the name of the image file. type ... tablefields, foreigntable (for field of another table) field. *fieldname* ... name of the table field separator ... separator in the filename between the matched beginning of the filename and the end part of the filename. table ... use another table and its configuration to get the image uid\_local ... use the value of this local field of the current table uid\_foreign ... use this field of the foreign table to find a match The file names will be like 41000\_1.jpg. A product will have multiple images if there are more files with a similar file name, e.g. 41000\_2.jpg. **Example:** :: ALL.generateImage { type = tablefields field.itemnumber = 6 separator = _ } ALL.generateImage { type = foreigntable table = tt_products_articles uid_local = uid uid_foreign = pid field.itemnumber = 6 separator = _ } Default .. _imageMarker: imageMarker """"""""""" .. container:: table-row Property imageMarker Data type *array of string* Description Defines how the marker for the image is composed. In this example image names like 30\_P1\_001.jpg can be used, where the second part P1 and the third part 001 form the marker. So the marker will be ###CATEGORY\_IMAGE\_P1\_001###. **Example:** :: ALL.imageMarker { type = imagename parts = 2,3 } Default .. _limit: limit """"" .. container:: table-row Property limit Data type int+ Description Max items displayed. The maximum number of items displayed on a list view. Default 50 .. _limitImage: limitImage """""""""" .. container:: table-row Property limitImage Data type int+ Description Max image items displayed. The maximum number of images for one item displayed on the view. **Example:** :: plugin.tt_products.conf.tt_products.ALL.limitImage = 10 Default 1 .. _orderBy: orderBy """"""" .. container:: table-row Property orderBy Data type string Description List of the fields by which the items will be ordered. Default sorting .. _fetchImage: fetchImage """""""""" .. container:: table-row Property fetchImage Data type string Description If set, the images for the output table are taken from the images of another table **Example:** :: plugin.tt_products.conf.tt_products.ALL.fetchImage { type = foreigntable table = tt_content } Default .. _language: language """""""" .. container:: table-row Property language Data type *array of string* Description The name of a language file with translations from the default language into another language. type: - csv ... The values are separated by ';' and newline characters - noTranslation ... do not use the language overlay table - field ... the translation is in fields - table ... the translation overlay table file: Path and name of the file field: name of the field on left and new value on right side marker ... Like CSV, but markers inside of the database table contents are substituted **Example:** :: [globalVar = GP:L = 1] language { type = csv file = fileadmin/data/EnglishCategories.csv } [GLOBAL] **Example:** :: language { type = field field.title = subtitle } Default .. _image: image """"" .. container:: table-row Property image Data type IMAGE cObject Description Image is copiebd into the others via TypoScript and can be used for several code fields. **Example:** :: ###PRODUCT_IMAGE1:M### plugin.tt_products.conf.tt_products.ALL.image.m { wrap = |
file.maxW = 320 file.maxH = 280 } Default .. _filter: filter """""" .. container:: table-row Property filter Data type *array of string* Description Use only table records which apply to a filter on a field or parameter base. type: - param ... GET/PUT parameter (value: gp) or predefined - regexp ... use a regular expression - where ... use WHERE conditions field: name of the field on left and value on right side **Example:** :: filter { regexp { field { title = [:alpha:]+[:blank:]+1[:blank:]+ } } } filter { where { field { bargain = 1 } } } filter { param { cat = gp } } Will filter all records of the table to use only those where the title has characters and a 1 on the last position. Default .. _urlparams: urlparams """"""""" .. container:: table-row Property urlparams Data type string Description Comma separated list of tt\_products URL parameters which must have a value. Otherwise no items will be displayed. Normally no products shall be shown below a category list when no category has been selected yet. If you leave this empty, then all products will be listed in the list view when no category parameter is given and you have a category list view on the page. Default .. _displayColumns: displayColumns """""""""""""" .. container:: table-row Property displayColumns Data type array Description Number of columns on the display You have to adapt your template using special template markers. The ITEM\_SINGLE\_PRE\_HTML and ITEM\_SINGLE\_POST\_HTML must surround your - tags, so the table will be created correctly. The first number is the order in the category hierarchy. **Example:** :: displayColumns { 1 = 3 } **Example:** :: ###ITEM_SINGLE_PRE_HTML### ###GW1B######PRODUCT_TITLE######GW1E###
###PRODUCT_IMAGE###
###GW1B### item count: ###GW1E###

###ITEM_SINGLE_POST_HTML### Default .. _displayHeader: displayHeader """"""""""""" .. container:: table-row Property displayHeader Data type string Description Each list view of items can have a header for the category. Normally the header is shown and after is all items of this category. But sometimes you want to show the header always with each product. values - always ... the category and product block is repeated always with each product - current ... the current category is taken and not a second category **Example:** :: displayHeader { 1 = always } Default .. _requiredFields: requiredFields """""""""""""" .. container:: table-row Property requiredFields Data type string Description Fields which must be read in from the database table even if not marker for them is found in the used template subpart. Default .. _special: special """"""" .. container:: table-row Property special Data type *array of string* Description Special treatment for the table. Only used with category parameters. - all ... this uid stands for all uids. 'all=all' means that all uids are always allowed. The the parameter is ignored. - no ... this uid shall never be considered **Example:** :: special { all = 1 } Table tt\_products\_cat: This will display the products of all categories if the parameter 'tt\_products[cat] = 1' is max\_note\_lengthset. So instead of listing the products of category 1 all products of all categories will be listed. Default .. _onlyChildsOfCurrent: onlyChildsOfCurrent """"""""""""""""""" .. container:: table-row Property onlyChildsOfCurrent Data type boolean Description If set, the child items (e.g. subcategories) will only be displayed for the current item (category). Default .. _field: field """"" .. container:: table-row Property field Data type *array of cObject* Description Use cOjects for the display of some fields. By default the field's contents are printed as is. Only the image field is used to draw an IMAGE. **Example:** :: field { title = COA title { 10 = TEXT 10.value = ###PRODUCT_TITLE### in sizes ###PRODUCT_SIZE### 10.wrap = Title: - | - } } Default .. _fieldIndex: fieldIndex """""""""" .. container:: table-row Property fieldIndex Data type int+/ *Array of integers* Description Index for fields with multiple contents. This is only used to define which article images shall overwrite which products images. On the left side you have the index of the image (starting with 1) and on the right the destinamtion index of the image. The marker for the first image would be ###\_IMAGE2###. :: fieldIndex { image { 1 = 2 } } Default .. _controlFields: controlFields """"""""""""" .. container:: table-row Property controlFields Data type *array of string* Description Control fields newitemdays ... name of the field to use with the newItemDays function **Example:** :: controlFields { newItemDays = starttime } Default newItemDays -> starttime .. _displayFields: displayFields """"""""""""" .. container:: table-row Property displayFields Data type *array of cObject* Description Display fields Definitions how to display some fields. **Example:** :: displayFields { note = RTEcssText } Default .. _fieldLink: fieldLink """"""""" .. container:: table-row Property fieldLink Data type *array of typolink* Description The definition for the field links. **Example:** :: conf.tt_products.ALL { fieldLink { datasheet.ATagParams=class="datasheetClass" } } Default .. _fe-users: fe\_users """"""""" .. container:: table-row Property fe\_users Data type *array of string* Description FE user fields for limitations period date\_of\_birth.period ... This period of time since the FE user's birth must have been passed, if products with uid 12 oder 24 are in the basket. **Example:** :: fe_users { date_of_birth.period.y = 12 where = uid IN (12, 24) } Default .. _view: view """" .. container:: table-row Property view Data type *array of string* Description code view configuration sortselect … array of form elements filterselect … filtering **Example:** :: view.sortSelect { 1 { label = sort by type = select attribute { onchange=submit(); } valueArray { 10.label = title 10.value = 1 10.field = title } } } browser … configuration for the record browser with types div2007showFirstLast … if the first and last link is shown. **Example:** :: view.browser = div2007 view.browser { browseLinksWrap =

|
disabledLinkWrap = | inactiveLinkWrap = | activeLinkWrap = | disabledNextLinkWrap = | inactiveNextLinkWrap = | disabledPreviousLinkWrap = | inactivePreviousLinkWrapn = | } Default .. _subpart: subpart """"""" .. container:: table-row Property subpart Data type *array of string* Description This determines the behavior of the display of the subparts. show … default. if a record for a default category must be shown even if no product is found (for cat). This is used if you have a default category on each page and the category header should always be shown. **Example:** :: subpart.ITEM_CATEGORY { show = default } Default .. _tagmark: tagmark """"""" .. container:: table-row Property tagmark (only categories in LIST) Data type array Description defines how the marker ###CATALLTAGS### is filled with the tags of the categories. **Example:** :: tagmark { parents = 1 prefix = cat } Default .. ###### END~OF~TABLE ###### .. _Form-configuration: Form configuration ^^^^^^^^^^^^^^^^^^ Setup only. There are several forms which can be configured. Put the code after the form settings. **Example:** :: plugin.tt_products.form.SEARCH.data.name = ShopSearchForm u .. ### BEGIN~OF~TABLE ### .. _data: data """" .. container:: table-row Property data Data type string/->stdWrap Description This is the data that sets up the form. name: name of the form. If empty, default values will be used. Default *depends on codefield* .. _dataArray: dataArray """"""""" .. container:: table-row Property dataArray Data type *[array of form elements]* Description Every entry in the dataArray is numeric and has four main properties, *label* , *type* , *value* and *required* . 'label' and 'value' have stdWrap properties. params ... Put additional parameters here. **Example:** :: form.SELECTAD.dataArray { 10.label = 10.type = tt_products[address]=select 10.params = onchange = "submit();" } Enhancement for the selection of variants with selectColor, … specification. :: form.ALL.selectColor.dataArray { 10.params = onchange = "submit();" } Default .. _image: image """"" .. container:: table-row Property image Data type IMAGE Description Image to display. Default .. _imageImport: imageImport """"""""""" .. container:: table-row Property imageImport Data type *array of fields* Description Fetch the images corresponding to values. **Example:** :: form.ALL.selectColor.imageImport { 10.sql.where = 10.prod.0 = earth-round.gif 10.prod.1 = marigold-round.gif 10.prod.2 = delft-round.gif } Default .. _layout: layout """""" .. container:: table-row Property layout Data type string Description This defines how the input field and other markers are placed towards each other. **Example:** This substitutes the "###INPUT###" with the input tag and the "###IMAGE###' with image data. :: ###INPUT### ###IMAGE### Default .. ###### END~OF~TABLE ###### .. _Basket-configuration: Basket configuration ^^^^^^^^^^^^^^^^^^^^ You can configure the behaviour of the basket here. **Example:** :: plugin.tt_products.basket.minPrice { type = price collect = goodstotal value = 250 } .. ### BEGIN~OF~TABLE ### .. _minPrice: minPrice """""""" .. container:: table-row Property minPrice Data type *array of string* Description minimum price which the products must reach to get a permission to buy them. E.g. only products of a total price of at least 250 shall be accepted. The products which have the 'no minimum price' checked, will not be counted here. **Example:** :: minPrice { type = price collect = goodstotal value = 250 } Default .. _view: view """" .. container:: table-row Property view Data type *array of string* Description basket view configuration showAmount … basket … if the amount of items in the basket is shown with each product in single and list view. … 0 … if the default amount with each product is always zero (needed for caching) input … input tag with radio buttons for the list view of products and the marker ###BASKET\_INPUT### insert the name of the radio buttons where: SQL where condition for products checked: preselected product uid **Example:** :: basket.view.input { 10.label = Buy: 10.type = radio 10.where = uid IN (12,13,14,15) 10.checked = 12 10.name = Radiobox1 10.params = } Default *showAmount = basket* .. _activity: activity """""""" .. container:: table-row Property activity Data type *array of string* Description activity configuration Possible activities are: basket, info, payment, verify, finalize, overview check: address … if the required fields have been filled in (see requiredInfoFields) agb … if the trading conditions checkbox has been clicked basket … if the basket has entries. clear: memo … If the MEMO for the items shall be cleared. **Example:** :: basket.activity.payment { check = address,agb,basket } Default .. _store: store """"" .. container:: table-row Property store Data type *boolean* Description If set to 0, then no basket will be stored. This is only usefull, if you have several shop plugins on a site. Then items are added to the basket only once. Default .. ###### END~OF~TABLE ###### .. _Control-configuration: Control configuration ^^^^^^^^^^^^^^^^^^^^^ You can configure the behavior of the views here. Insert the CODE after control. **Example:** :: plugin.tt_products.control.LIST.param { ignore = pp } .. ### BEGIN~OF~TABLE ### .. _param: param """"" .. container:: table-row Property param Data type *array of string* Description The behaviour of the control parameters can be changed here. This is needed e.g. if you have several product lists on the same page and you must turn some URL parameters off in order the lists are shown correctly and not show unwanted filter effects. use … if a parameter is to be activated (only for backPID) item … if a link parameter must always be generated from the item record (for cat) **Example:** :: param { ignore = pp use = backPID item = cat } Default .. ###### END~OF~TABLE ###### .. _Payment-shipping-and-handling-configuration: Payment, shipping and handling configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Payment and shipping are very similar in configuration and therefore shared the same property list with special notes if something is for the one type only. The configuration of payment and shipping is in short a question of defining the items to choose from on the basket page. That is, a choice of one out of many transportation methods and one out of many payment methods. Therefore you can for instance select either radio-button representation or selector box. The number of the selected payment method or shipping method is reflected in the html-template certain places and you may also want special PHP scripts executed based on the settings. That's all allowed. **Example:** :: plugin.tt_products.payment { radio = 1 TAXpercentage = 19 10.title = Prepaid 20.title = PayPal 20.percentOfTotalShipping = 0.04 30.title = Cash on Delivery 30.price.1 = 4 30.price.6 = 5.8 30.showLimit = 99 } plugin.tt_products.shipping { radio = 0 TAXpercentage = 19 10.title = Deutschland 10.image.params = align=absmiddle 10.price.type = count 10.price.1 = 2.5 10.price.20 = 4.8 10.price.50 = 10 10.price.100 = 25 10.price.120 = 30 10.price.300 = 150 10.percentOfGoodstotal = 0 20.title = Europa (nicht Deutschland) 20.image.params = align=absmiddle 20.price.type = count 20.price.1 = 8.8 20.price.20 = 11.8 20.price.50 = 11.8 20.price.100 = 25 20.price.120 = 30 20.price.300 = 150 20.percentOfGoodstotal = 0 30.title = Selbstabholung 30.type = pick_store 30.price.1 = 0 } plugin.tt_products.handling { 10 { TAXpercentage = 19 10.title = Printing Costs 10.price = 17 } 20 { TAXpercentage = 19 10.title = Small Volume Addition 10.price = 5 } 30 { TAXpercentage = 19 10.title = Packaging Costs 10.price = 1.95 } } .. ### BEGIN~OF~TABLE ### .. _radio: radio """"" .. container:: table-row Property radio Data type boolean Description If set, you get radio button layout. If not, selector-box. Default 0 .. _template: template """""""" .. container:: table-row Property template Data type string Description **(Radio layout only)** If .radio is true, this string is the 'template' for the radio items. **Default is (in one line):** :: ###IMAGE### ###TITLE###
Default .. _wrap: wrap """" .. container:: table-row Property wrap Data type string Description **(Select layout only)** If .radio is false, this string wraps the