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 pricing like 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 (displayBasketColumns=1 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 FE/BE Library (fh_library). 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.
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:
<!-- ###BASKET_OVERVIEW_TEMPLATE### begin -->
<div class="shop_minibasket">
<div class="shop_minibasket_image"><!--###LINK_BASKET###-->###IMAGE_BASKET###<!--###LINK_BASKET###--></div>
<p>###NUMBER_GOODSTOTAL### Products (EUR ###PRICE_GOODSTOTAL_TAX###.-)</p>
<!-- ###BASKET_OVERVIEW_TEMPLATE### end -->
<!-- ###BASKET_OVERVIEW_EMPTY### begin -->
<p>No products in basket.</p>
<!-- ###BASKET_OVERVIEW_EMPTY### end -->
</div>
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.
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'.
This is practical for “What is new?” pages. Create simply a link to the SEARCH page and add "newitemdays" as parameters. http://www.my-typo3-shop.com/?id=8&newitemdays=10The search result will contain all the products of the last 7 days.You have to use the plugin code LISTNEWITEMS. You can also set the constant "newItemDays".
You have to use the plugin code LISTOFFERS for the items marked as 'offer' and LISTHIGHLIGHTS for the newest items.
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).
You can add items to a memo page when a user is logged in. This memo page will be saved in the fe_user table. 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.
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).
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.510.type = price 10.prod.1 = 0.02 10.prod.101 = 0.04 10.prod.501 = 0.06 }
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.
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.
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.
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 eg S;M;X;XL - this will correspond to the product articles we'll create next.
Note
Image
Datasheet (if applicable).
Add the product variants. Here 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 template. This 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:
<!-- ###display_variant1### -->
Color:><SELECT name="###FIELD_COLOR_NAME###" rows="1">###PRODUCT_COLOR###</SELECT>
<!-- ###display_variant1### --><!-- ###display_variant2### -->
Size:><SELECT name="###FIELD_SIZE_NAME###" rows="1">###PRODUCT_SIZE###</SELECT>
<!-- ###display_variant2### -->