Product data includes not just products, but categories, versions, options and attributes too. The relationship between these will be covered in this section, as well as the process for setting them up.

Before you start entering product data, it is important to understand the way this data is structured in Kartris.
There are three basic required elements of product data structure:

  • categories
  • products
  • versions
A product must have at least one version, and feature in at least one category –  so in this respect, all three elements of data structure are required for every product item you have.

Categories can be nested within other categories. Kartris is designed to allow unlimited category levels, though in order to manage even the biggest sites, five levels is probably more than enough.

unlimited category levels

Each category can have any number of parent categories, and you do not have to have the same number of category levels throughout the store. For example, below we see a product whose category can be reached via three navigation routes. One of them has two levels, one three and the other four. A product can also have multiple parent categories.

multiple parent categories

A category can at the same time be a parent both to other categories, and products. This provides more flexibility as you can nest general interest products in a category, while still subdividing other items into further subcategories.

A parent category can have subcats and products under it

There are several different types of products that can be created within Kartris.

This is the simplest form of product; it has a single version and for display purposes the two are merged into a single unit.

Single product

This is suitable for items that tend to have only one degree of variation. For example, ketchup that might come in several different bottle sizes (each with its own SKU / item code), or a book that comes in hardback, paperback and audiobook. Each version can have its own image, as well as the product having images too.

Multiple version product

This has a single base version and unlimited options can be applied to it. This is suitable for products with multiple types of variation such as size, style and colour. You can have as many options as required, and these can display as dropdown menus, radio buttons or a checkbox. It is therefore ideal for items such as computers that might be highly configurable, with a choice of hard-disks, processors, operating systems, RAM, and so on.

You can control whether a selection is required for a particular option. So for example, when configuring a computer, the RAM and processor selections would be required (because a computer must have both) but the secondary hard-disk size selection might be optional (if the component was not necessary required).

Options product

This is similar to an options product, and is created in the same way. But you can choose to create 'combinations'. The system will then create a unique record for each permutation of the options. This allows you to record stock level for each permutation separately, and have a different SKU / item code for each permutation.

The number of permutations will be limited to a few hundred for performance reasons. Remember that you only need to create a combinations product if you are stock tracking or need a unique SKU for each permutation - otherwise use an options product.

In some cases, none of the built-in Kartris product types will suit your purposes. A typical example would be a site producing bespoke curtains or signage. You would need the user to enter a height and width (which could for example be anything in mm between 30 and 3000). Options would be impractical as you'd need to create every option between 30 and 3000. Furthermore, height and width values would both be required to calculate the area of fabric needed, and then the price - but option prices can only apply to a single option selection.

Fortunately, if you're familiar with ASP.NET, it is possible to create virtually any type of product configurator and plug it into Kartris. This is done by creating a custom user control that contains all the logic needed to price and detail a product. Examples of the kind of thing that is possible with a custom user control:

  • A product configurator for signage, with choice of materials, prices/m2 and all other data pulled from an Excel spreadsheet
  • A product configurator for insurance policies which uses an XML web service to pull pricing from another remote web site
  • A product configurator which uses a formula to calculate the price of the item based on the various values entered
Kartris includes a couple of sample custom controls to illustrate the kind of coding required. These can be found within the default install of Kartris at this location:


To link a product to a custom control, you should create a single version product. The price can be zero, assuming that you will calculate this within your custom control. You then need to go to the 'object config' and enter the name of your new custom user control, which itself must be placed in the UserControls/Custom folder.

All products must belong to at least one category, so before you can add any products, you should create the categories required.

If you intend to have a 'shop by category / shop by brand' option, then you should start with just two top level categories (one for each) and nest everything else inside those. Remember that products can have multiple parent categories, so any product can be in both sections (or subcategories within them).

To add a new top level category, go to 'Products > Add New Category'.

Alternatively, you can list the top level categories with the 'categories' icon next to the home button on the left hand menu, then click the 'new' link to the top right of this page. If you want to create subcategories, navigate to the parent category where you want to place the subcategory, and then click the 'new' link. This will pre-fill the 'parent' category into the form.

If you are creating an 'options' product, then you will need to create the options first.

Then you can either go to 'Products > Add New Product', or you can click the 'New' link next to the products section in a category view. This will bring up the product editor page.

Each product must belong to at least one category. In such cases, the category that a product belongs to is called its 'parent'. To select a category, enter the name (or part of the name) in the single line text box of the 'category parent' section. A list of matching categories will spring up. Select the appropriate one and hit the 'Add' link next to the box. The category will be added in the box above.

Kartris supports multiple category parents. You can use the same process to add further categories. All the categories that a product belongs to will be listed in the multiple dropdown.

To remove a category from being a parent of this product, simply highlight it in the multiple dropdown list and click the 'Remove selected' link.

These product-category relationships will only be saved when the product is updated/created with the 'Save' button.

There are three selectable types of product – single version, multiple version and options product. These are explained further in 4.1.4. Product types.

When you select the product type, some of the dropdown menus immediately below will be enabled or preset to certain values and disabled. This is because certain selections of these only apply to certain product types.
If you are editing an existing product, and find that you are not permitted to change the product type, it is most likely because the product has associated data which is incompatible with the other product types. For example, if you have a multiple-version product, it cannot be changed to a single version or options products without first deleting the extraneous versions.

After creating a new product, you will see a warning at the top of the page that the product is not live on the web site because there are no versions live.

Not visible

This makes clear if there are any reasons why the product being viewed is not visible from the front end of the web site. The reasons include:

  • No valid live version

  • Product is disabled ('show on site' checkbox unchecked)

  • Product belongs to a customer group (in this case, the warning makes clear that the product is only visible to members of that group, and not the wider public)

  • None of the parent categories are live
If you find for some reason that a product you created doesn't show up on the front end of the site, check it in the back end - this warning should provide clear guidance on the reason, and hence what steps you need to take to fix it.

In Kartris, every product must have an least one 'version' under it. A version is the record that contains the price, tax rate, SKU (unique item code), item weight and stock quantity information.

If you create a 'single version' product, a new version is automatically created. However, you must still go to the 'versions' tab in order to enter a price and other minimum information, as well as to set the new version live.

For other product types, you must also create at least one version before the product is complete and can be visible on the front of the web site to be purchased.

RRP, or recommended retail price, let's you display a guide price on your site for the manufacturer's recommended pricing, typically in order to demonstrate how much cheaper than the norm your price is.

To activate this, you must first turn the RRP display on with the frontend.versions.display.showrrp config setting, then you can set a value for RRP for each version. Note that this only shows on some version types; options products do not display this for example, because the price of options products is not fixed - and providing an RRP for each permutation of options would be unnecessarily complex for what is essentially just a guide and marketing device.

Versions can be reached in a number of ways.

You can navigate the category structure and see products listed; clicking the [+] sign to the left hand side of the product name will expand the product so that its versions are visible.

Versions can also be found from the search box in the Kartris back end. When editing a product, you can switch to the 'versions' tab to see all versions listed.

Kartris products can have unlimited images. To add an image for a product, click the images tab and then 'Add new'.

Hit 'Browse' and navigate to an image on your local computer. Ideally, this image should be sized already for use as a 'large view' image on your site. Typically this would mean JPEG format (.jpg extension), no more than 600 pixels in each direction, and below 100KB in size. Once selected, click the 'upload' link to the left of the browse box. The image should appear in the list.

Don't worry if it appears slightly distorted or squashed; this back end view is not how the image will appear on the front end; it is just a rough thumbnail that will be made square here. On the front end of the site, the image aspect ratio will be maintained, and it will be reduced in size where necessary for use as various sized thumbnails, normal sized view, and large view.

You can upload multiple images one by one. They will appear here as a list. The image order can be changed using the up/down buttons, or it can be deleted.

Where there are multiple images, the first will be used for the product on the front end of the site. On the product page itself, the first image will display larger, while the others will be thumbnailed below in a gallery. A large view feature is automatically provided.

If no image is included, a place-holder image may be displayed on the front end instead, depending on the frontend.display.image.products.placeholder config setting.

Kartris supports a number of different media formats that you can upload or attach to products. You can also choose an icon for each media clip (for example, a screenshot), otherwise the media will be served with a default icon for whatever the type is.

This will actually work for any embedded media from video web sites. Follow the instructions on the web site to obtain the embedding code, and then paste this into the space provided in Kartris. For example, on Youtube, you choose the 'Share' and then 'Embed' tab, as follows:

Youtube video - obtaining embed code

Then copy this embed code (blue in the image above) to Kartris's 'embed' field:

Embed Youtube into Kartris

These will be embedded into web pages using the respective media template in the /UserControls/MediaTemplates folder. You can customize or change these if required.

If you would prefer that the media be served as a download, check the 'Downloadable?' box.

These will appear as links to download the media.

Attributes will need to be set up before using this feature.

Check the attributes you wish to use, and a text field appears by them. You can enter the text value for all languages that your store uses. Don't forget to 'Save' anything you change.

This feature lets you tie products together with one-way links, so customers viewing this product will see links to any other products you specify.

If you create customer groups, you can set specific pricing for items for members of that group. So for example, you could have wholesale pricing, preferred wholesaler pricing and so on, in addition to the normal price available to everyone else. See 6.2.3. Per-customer group pricing.

Expand versions

You can click the name of a product or the 'edit' link to bring up a product for editing. If you want to view the versions under it, you can click the [+] button to the left of the product name:

You have a number of tools to control the order in which products and categories are listed on the site. There are broad global settings which you can use to apply sort rules across the site, but you can also have granular control right down to individual items and put them in exactly the order you wish.

Typically as default, categories, products and versions will be sorted based on three corresponding config settings:


The sort direction (ascending or descending) is determined by these config settings:


These are the 'global' settings. When you create new categories and products, they will default to using these config settings for sorting the child categories, products and versions under them.

The sort criteria for items is set at the parent. If you want certain products to show in a particular order, you must set this at the parent category of those products. First you set the criteria by which products will be sorted:

Sort Products By :

  • Product ID
  • Product Name
  • Product Creation Date
  • Product Last Modified Date
  • Product Category Sort
The last one of these should be selected if you wish to manually sort the products into exactly the order you required.

You also need to set a sort direction:
  • Ascending
  • Descending
For example, sorting by 'Product Last Modified Date' and sort direction 'Descending' will show the most recently edited/added products first.

To manually sort the products, you must first set the category to sort products by 'Product Category Sort'. You will then see up/down arrows appear on the products when viewed in the back end, as shown below. You can click these to sort the items.

Product sort

The sorting of categories is conducted in a similar way to sorting products; subcategories sorting criteria is controlled from the parent category.

Top level categories are always manually sorted. You can click the 'view categories' toolbar button and then change the sort order of categories with the up/down buttons to the left hand side of each category.

Before creating 'options' products, you will first need to create some options.

Options products are typically used when you have an item that is has more than one aspect of variation. For example, if you have an item that is available in 5 different colours, you should generally create it as a multiple version product, with each colour as a different version. But if the same item is available in 5 different colours AND 3 different sizes, then you have two different variables. In such cases, options result in a cleaner interface from the customer perspective.

Go to 'Products > Option Groups' and click the 'new' link.

Give the option a name, such as 'Colour', choose the display type. You will also have to set language specific names for this option for use on the front of the site. Click 'save'.

Next, click on the 'Option Values' link for the option group you just created.

Enter the name, e.g. 'Blue'. You can also enter a price and weight modifier for this option to reflect the fact that some options come at additional cost. Note that these values are just defaults – you can change them per product when you use the option later if you wish.

Add as many options as you need.

Main options page

Once you have options, you can create an options product.

Click the 'options' tab within a product (if there is not one, make sure you created a product of the correct type, on the main Product Info tab).

You can enter basic info for the item, including the base price.

On the 'Product Options' tab, you can select which option groups apply to this item, and which options in each to include. You can also override the default price and weight modifiers. For each option group, you can check the box if it is optional – in this case a select is not required. You can also select which of the option values is the default value – the menu or radio button on the front end will default to this.

The options tab

On sites with fewer than 25 option groups, when you view the options tab under a product, all the options will be shown.

On sites with 25 or more option groups, only the option groups which have been selected for this product are shown, and they are collapsed by default. They can be opened to view the option values with the overlapping squares icon. Once expanded, there are two links to quickly select or deselect all the option values.

The sort value is an arbitrary number used to determine the order that options appear in. If you leave it as zero, then Kartris will determine the order of options.

So if you want 'colour' to appear after the selection for 'size', set the sort order value to 10 for size and to 20 for colour.

It makes sense to assign in steps of 10 rather than with consecutive numbers, as it gives you the flexibility to insert new values later without having to change all the sort values. For example, you can insert a new option 'style' between size and colour by giving it a sort value of 15.

When you create an option value, you can enter a price modifier and a weight modifier (in default currency). In this way, an option selection by a customer can change the overall value of an item. For example, a T-shirt might be €14.99, but the extra-large option might be €2.00. When the customer selects this option, the price of the T-shirt on the page will change to €16.99.

Similarly, a particular option that adds additional weight can be accounted for (important if your shipping prices are related to item weight).

Product attributes are pieces of special information associated with a product. Entering information in the form of attributes, rather than just plain text within the description, not only aids the clarity of display, but also enhances functionality since the data is more structured.

Attributes are entered at product level, so if you have multiple versions or an options product, care should be taken to ensure that the attributes apply to the product in general, including all versions.

Attributes are sometimes confused with 'options', but they are quite different. Options are choices that are available to a customer to select when choosing a product. Attributes on the other hand are fixed pieces of information that apply to the product and cannot be selected or deselected by a customer.

To give an example of usage, a book might have a number of attributes:

  • ISBN (unique book number that all books have)

  • Publisher

  • Author

  • Genre (thriller, romance, non-fiction, etc.)

  • Format (hardback, paperback, audio book, e-book)

Once created, you can enter the information for each and every book you feature on your site (although there is no requirement to enter any attributes for any item where you don't wish to).

Attributes set to display on a product page
Attributes set to display on a product page

Go to 'Product > Product Attributes'. A list of all current attributes appears. You can click to create a new attribute, or edit an existing one.

Attribute type is fixed as 'text', but other types may be supported in future.

You can control if the attribute is displayed in the product page from the checkbox – unchecking the box means the attribute is hidden from displaying there.

If all the attributes of a product are hidden in this way, the 'product details' section on the product page will be hidden.

You can control whether an attribute is searchable too, with the 'include in search' checkbox. For example, you might not want voltage to be searchable, but you would most likely want the author attribute for a book to be searchable, or the ISBN number, as customers are very likely to use these to find particular items.

The final option is 'Show on comparison table'. This sets the circumstances under which the attribute will be displayed when comparing products.

The main attributes management page
Attributes with extra management features
The attributes tab under a product, with the extra management features activated

On sites with very large numbers of attributes, displaying all of them in the back end product tab becomes very slow. To overcome this, if a site has more than 25 attributes, Kartris will by default only show the attributes that have been given values. To add new attributes that are not present for a particular product, a search box at the top of the attributes tab is used - add part of any attributes name, submit, and it will appear at the top of the tab, above the existing attributes. Checking the box by an attribute opens it so values can be added. Then the product can be saved to update it.

The object config system is a way of storing extra settings at product or version level, which can be edited from the product's page in the back end. These are kind of like config settings, but they apply just to a specific product or version.

object config settings

If you are customizing Kartris and adding new functionality which requires settings at category, product or version level, adding a new object config setting is very simple. Just go into the database directly and add a record to the tblKartrisObjectConfig table. The data type can be [s]tring, [b]oolean or [n]umber. You can also choose whether the field in the back end is a textarea (multiline) or regular input field (single line).

To retrieve the value in code, just call it like this:

ObjectConfigBLL.GetValue("K:product.addtobasketqty", 99)

Where 99 is the database ID of the product (or version, if the object config setting is a version one).

This controls the display of the 'add to basket' region of the product. The valid values are:

  • 'dropdown' - a select menu numbered from 1 upwards (to a number set in frontend.basket.addtobasketdropdown.max) displays just in front of the 'add' button so a customer can select a quantity and then add that number of items to the basket; this is most appropriate where users will only ever purchase a small number of similar items.

  • 'textbox' - a free text field where the customer can enter a quantity and then click 'add'.

  • 'none' - no quantity selection, just an 'add' button which adds a single item to the basket; this is most appropriate for big ticket items or customizable items where a customer is only ever likely to order one.

It should be noted that a customer can still edit the quantity of items as free text within the basket page, or click multiple times to add further items, so this setting does not create any limitation on what a user can checkout with.

Where no value is entered, the product will default to use the frontend.basket.addtobasketdisplay config setting value. So you should set that to act globally on your store, and then use this object config value on a per product basis to override it for particular items if desired.

If checked, this product's price will be replaced with 'call for price' or similar, and the button to add it to the basket will disappear. The actual display text can be set in the ContentText_CallForPrice language string.

Custom controls is an advanced developer topic. It is a prototype system that allows the normal product 'add item' section for a specific product to be replaced by a custom user control. The control can handle all the logic of displaying options, accepting text input, looking up prices from a web service or spreadsheet or new database table, making calculations and formulating the price and description of an item which can then be placed into the standard Kartris basket. This permits total flexibility in the kind of products Kartris can handle, with total freedom for skilled developers to create complex configuration tools for products. It's particularly useful for handling custom measured items such as curtains, signage, boxes, etc. where the price can be a factor of multiple dimensions which themselves have 100s or 1000s of possible values. In these cases, it's simply not possible to use options.

This object config setting holds the name of a control in the /UserControls/Custom/ folder that this product should use, for example 'SampleCustomControl.ascx' (which we include as a sample in the core Kartris zip).

Most items you sell will probably be sold as individual pieces, in which case the unit size is 1. This means the basket allows only values divisible by 1 (i.e. integer values).

But for some items, you may want to change this. If you sell cloth for example, it may be that you price it in metres, but can provide it in any length to the nearest centimetre. In this case, you can set the 'unitsize' object config for this item to 0.01 (1cm = 0.01m, the unit you're pricing in).

It can also work in the other direction. If you sell screws or bolts, you may price them individually, but being small items, only provide them in multiples of 50. In this case, you can price the item per piece, but set the unit size to 50.

The unit size can be any value, you could set it to 12 if bread rolls are priced individually but only available in 'dozens' or 0.25 if you price an item in kilograms but actually deliver it in multiples of a quarter kilo.

If a user tries to add an incompatible quantity, either from the product page, or by editing quantities in the basket, a warning is displayed indicating that the item can only be ordered in multiples of whatever value you have set.

This is an advanced setting that allows you to specific a fixed price for each combination of options available for a product. For example, a product might be available in two different widths, and three different heights. Normally with options, you can only set a price modifier for each option independently from other options. So for example, you could set that the taller item is +£10 in cost, but in practice the amount extra will need to vary depending on the width of the item too.

By setting the 'usecombinationprice' object config on, you can price the individual combinations you create for a product without this being calculated by the base price plus/minus any option price modifiers.

Extra code number for versions (store specific). At present this is not used within the regular Kartris code, but it could have extra functionality written around it if required.

Suppliers are manufacturers or resellers from whom the store purchases items it sells.

To access suppliers functionality, go to 'Products > Suppliers'.

Any suppliers you set up will be available in the 'suppliers' selection when editing or creating a product.

Setting the supplier is useful to help with managing stock in the back end of Kartris. You can list all the products from a particular supplier from the suppliers page – this makes it easy to locate all items from a particular source if you have a recall or other issue to attend to.

Also, you can filter the stock level warnings ('Products > Stock Levels') by supplier. This allows you to see which items need ordering from any particular supplier while preparing an order.

If you sell items where you have a limited number in stock, and where your resupply period might be more than a day, you will normally want to use stock tracking to ensure you don't sell items that you cannot deliver.

Stock tracking does not need to be activated globally for the store. Instead, you can apply just to the items that you need to track stock for.

When creating or editing a version, check the 'stock tracking' checkbox. There are two relevant text fields: the actual stock quantity, and the warn level.

When the stock quantity reaches the warn level or below, a stock warning will appear in the 'To Do' list on the right hand side of the back end. This way, you can re-order more stock before your supplies are exhausted.

Items which are out of stock will have their 'Add' button on the front end replaced by an 'out of stock' message to prevent the items being purchased.

You can use the frontend.orders.allowpurchaseoutofstock config setting to allow out of stock items to be purchased on your store.

The vast majority of items sold by online stores are physical items that require shipping to the customer. However, stores may wish to offer free delivery on some items or even sell items which are delivered digitally (as a download).

Kartris supports the sale and delivery of digital items. When you create a version, you can select the Delivery Type as either 'Link to Downloadable File' or 'Downloadable File'. The former let's you specify a link to a file, either as a full absolute URL or a relative URL to a file on the same web site. This is useful if you have large general file downloads which don't need any special protection (perhaps because you issue licenses to use them separately).

The 'Downloadable File' option allows you to upload a file for the item. This is not ideal for huge files, but should generally be able to handle files up to several megabytes in size.

The links to download files will be available to purchases in the 'downloads' section of their 'my account' pages.

There are some settings which can help control how files are dispatched and protected.

frontend.downloads.hidden - if this is set to 'y' (default), Kartris will hide the path of a file from the user and stream it them instead. This provides additional security for files.

frontend.downloads.daysavailable - this is the number of days after a purchase that downloadable items are available for. The default is zero, which means there is no limit. If you only want a customer to be able to retrieve the download for 2 weeks (for example) then you can set this to 14 days.

frontend.downloads.instant - for security, you may only want files to be available to purchasers once you have set the order status to 'dispatched'. This is useful if you are concerned about fraudulent orders, which may be more common for downloadable items where no physical delivery address to retrieve the goods is required. If set to 'y' files will be available from the 'my account' area immediately when the order is paid and called back. The default is 'n'.

'Free shipping' is somewhat of a misnomer. What it actually does is to to exclude the weight or value of the item from total used to calculate shipping, so the shipping price for the order will be the same as it would be if the item was not in the order. To make sure that an order with just a single item that is 'Free shipping' actually gets free shipping, you should ensure that your shipping setup includes a 'zero' band, resulting in a shipping cost of zero for order weight/value up to 0.01 (or 0.001 for example).

For more information on configuring your store's shipping, please see 3.6.5. Shipping / postage.

Powered by tomeCMS