Product Categories

Product Categories are collections of custom fields – product category fields – which can be used to extend a subset of products, either via inheritance (categories) or by being explicitly added to each product (properties).

Three different types of product categories can be created:

  • Category field collections are used to extend all products in a product group with the custom fields.
  • Property field collections are used as containers for fields which are added on to products on a case-by-case basis
  • Reference field collections are used as containers for category fields which are used in multiple other product categories – like color or width.

These different field collection types are described in more detail later in this article, but the general idea is that product categories and product properties are used to extend products with custom fields, whereas reference fields are used to 'gather' all the values from a field used on multiple categories - e.g. Color - in order to make it easier to create facets on product lists which contain products from several product groups.

A small search bar above the list of product categories, allows you to quickly locate the wanted product category.

To create a product category:

  1. Go to Settings > Ecommerce > Product Catalog > Product categories
  2. Click New in the toolbar to open the edit product category view (Figure 1.1)
  3. Provide a Name
  4. Select a field type for the category:
    1. Category
    2. Property
    3. Reference
  5. Save
Figure 1.1 A product category

Once the category has been saved, you must add at least one category field to it. To create a product category field click Add new field and fill in the field settings (Figure 1.2).

Here you must:

  • Name the category
  • Add a number of product category fields with a name and a field type
  • (Optional) provide a description
  • (Optional) set the field to Hide if empty and/or Do not render

The Do not render checkbox makes it possible to mark a field as an administrative field only – when it is checked, this field will be left out of the loops which render product category fields in frontend.

Figure 1.2 A product category field

The Settings section defines basic properties:

  • Enter a Name, a system name, and a template tag
  • Select a field type
  • (Optional) Provide a description
  • Check Hide if empty to hide this field on products where it does not have a value – this effectively makes it into a product property
  • Check Do not render to mark this as an administrative field which is left out of loops in frontend

The Field section specifies what type of field this is:

  • An ordinary field
  • A reference to another field.

If you select Reference here the dropdown allows you to choose between all fields located in Reference field collections, which are described in more detail later in this article. When a reference field is selected, all basic settings are retrieved from that field, but you can customize the following:

  • Name
  • Description
  • Display as (for fields of the type List box)

You can reset any customizations by opening the reference field and clicking Force values to links in the toolbar, which will force the values on the reference field to all fields referencing it.

The Field settings section allows you to quickly configure the fields settings for this field.

A small search bar above the list of category fields allows you to quickly locate the wanted category field. The fields in a product category can be sorted by clicking Sort fields above the category fields list. The sorting of fields is done in another window. 

A category field collection is used to add a set of custom fields to a subset of products – e.g. bikes or shirts. Once created, this type of product category is attached to a product group, extending all the products inside the group with the fields in the product category.

For example, if you sell two types of products in your shop – bikes and shirts – you could create two product categories:

  • Bikes – containing fields such as frame material, color, gears, breaks, etc.
  • Shirts – containing fields such as washing instructions, color, fabric, pattern, etc.

This type of collection is therefore ideal for scenarios where products are placed in a category-based group structure, and where the set of secondary properties are well-defined from the beginning.

After a product category has been created it can be attached to a product group via the product group settings (Figure 2.1).

Figure 2.1 Using a product category collection

To do so:

  • Right-click a product group and select edit group in the context menu
  • Use the product category dropdown to select the category
  • Click OK
  • Save

This causes two things to happen:

  • All products in this group now have the product category fields available
  • The product group now has a section for setting default values for the fields (Figure 2.2)
Figure 2.2 Default product category field values

Default values set here may be overridden or restored when editing a product.

A property field collection is used as a container for product properties; fields which are available on all products in PIM and Ecommerce but not shown unless it has a value or has been explicitly added. Product property fields will show in Ecommerce but can only be added via PIM or an integration setup.

Once a property field collection has been created, the field can be added manually from Dynamicweb PIM.

Product properties are ideal for scenarios where secondary product data is non-hierarchal and/or disorganized. Please be aware that using product properties may lead to performance issues – in many cases it is advised to explore alternatives, e.g. regular product category fields.

A reference field collection is used as a container for fields which can be referenced by reference fields in category field collections or property field collections (Figure 4.1). 

Reference field collections are ideal in scenarios where the same field needs to exist across several product categories, or as data destinations on integrated solutions where end users create new product categories from a central collection of fields. A field in a reference collection cannot reference another field.

When indexed, a field in a reference collection contains all the values from the fields which reference it – this makes it possible to create a single facet and use it to filter products belonging to several product categories, e.g. a Color field which is used across several separate product category fields.

Figure 4.1 A reference field collection

Please note that reference field collections consist of ordinary fields and not references - the reference is created on the category field collection or the property field collection. Ordinary category fields can be converted to reference fields - which simply means moving it to a reference field collection - using the Convert to reference field button in the toolbar, but the process cannot be reversed.

To create a reference to a field in a reference collection:

  • Open the product category where you want to create the reference
  • Click New field
  • In the Field section:
    • Select Reference
    • Select the field you want to reference
    • (Optional) Check Include all existing languages to create the reference in all the languages that the referenced field exists in
  • Save

When editing a field in a reference collection you can use the Force value to linked fields button in the toolbar to force all values from the referenced field to the corresponding fields on the reference fields in your product categories. This only applied to the currently selected language.

To see where a field in a reference collection is used click the Show usage button.

database

These are the tables associated with Product Categories:

EcomProductCategory

Contains Ecom product categories as defined in Settings -> Ecom -> Product catalog -> Product categories.

Field name Data type Length
CategoryId nvarchar 50
CategoryAutoId int 4
CategoryProductProperties bit 1
CategoryType int 4

EcomProductCategoryTranslation

Contains translated data for a product category (CategoryTranslationCategoryId) in different languages (CategoryTranslationLanguageId).

Field name Data type Length
CategoryTranslationCategoryId nvarchar 50
CategoryTranslationLanguageId nvarchar 50
CategoryTranslationCategoryName nvarchar 255
CategoryTranslationAutoId int 4

EcomProductCategoryField

Contains individual field definitions for product categories (FieldCategoryId).

Field name Data type Length
FieldId nvarchar 255
FieldCategoryId nvarchar 50
FieldTemplateTag nvarchar 255
FieldType int 4
FieldDefaultValue nvarchar Max
FieldPresentationType nvarchar 50
FieldSortOrder int 4
FieldAutoId int 4
FieldDoNotRender bit 1
FieldHideEmpty bit 1
FieldForeignCategoryId nvarchar 50
FieldValidationPattern nvarchar 255
FieldIncludeAllExistingLanguage bit 1

EcomProductCategoryFieldTranslation

Contains translated field definitions (FieldTranslationFieldId) for categories (FieldTranslationFieldCategoryId) in different languages (FieldTranslationLanguageId).

Field name Data type Length
FieldTranslationFieldId nvarchar 255
FieldTranslationFieldCategoryId nvarchar 50
FieldTranslationLanguageId nvarchar 50
FieldTranslationFieldLabel nvarchar 255
FieldTranslationFieldOptions nvarchar Max
FieldTranslationAutoId int 4
FieldTranslationDescription nvarchar Max
FieldTranslationErrorMessage nvarchar 255

EcomProductCategoryFieldGroupValue

Contains category field (FieldValueFieldID) values set on product groups (FieldValueGroupId, FieldValueGroupLanguageId).

Field name Data type Length
FieldValueFieldId nvarchar 255
FieldValueFieldCategoryId nvarchar 50
FieldValueGroupId nvarchar 255
FieldValueGroupLanguageId nvarchar 50
FieldValueValue nvarchar Max

EcomProductCategoryFieldValue

Contains category field (FieldValueFieldID) values set on products (FieldValueProductID, FieldValueProductVariantID, FieldValueProductLanguageID).

Field name Data type Length
FieldValueFieldId nvarchar 255
FieldValueFieldCategoryId nvarchar 50
FieldValueProductId nvarchar 30
FieldValueProductVariantId nvarchar 255
FieldValueProductLanguageId nvarchar 50
FieldValueValue nvarchar Max
FieldValueAutoId int 4
FieldValueSortOrder int 4