Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
This topic describes how to organize and leverage catalogs to extend functionality for browsing, searching, and displaying items in a product catalog, essential features for e-commerce websites.
Set up the structure of the catalog with products and variants/SKUs based on how you intend to work with the data. You can use a product grouping under the categories, or you can work directly with stock keeping units (SKUs). If you will have only one SKU per product, there does not need to be a product.
The system also supports multi-level product inheritance to attach products as variants to a product. The child product can have further child variants. In the following example image from the fashion industry, a product in Commerce is a style for a sweatshirt. A specific color of that shirt is a variant linked to the product, and the combination of a specific size and color is a SKU. Enrichment is primarily done on the style level, and images and color are added on variant level. The SKU is the sellable unit with a set price. Typically, some information is retrieved from an external Enterprise Resource Planning (ERP) or Product Information Management (PIM) system integrated with Episerver Commerce.
If you have multiple SKUs per product, you need to create a page template for this. You can have as many page templates as you want; typically you have one for SKUs, one for each type of product, one for bundles, and so on. Because you have multiple templates, you can mix products and SKUs in listings.
Classes in this topic for working with catalogs are in the Mediachase.Commerce.Catalog namespace.
Example: looking for changed data in the DTO and saving new, changed, or deleted data
ICatalogSystem target = CatalogContext.Current;
CatalogDto catalogs = target.GetCatalogDto();
foreach (CatalogDto.CatalogRow catalog in catalogs.Catalog)
{
existingCatalogId = catalog.CatalogId;
break;
}
CatalogEntryDto dto = target.GetCatalogEntriesDto(existingCatalogId, response);
// Catalog entry create and set properties
CatalogEntryDto.CatalogEntryRow catalogEntryRow = dto.CatalogEntry.NewCatalogEntryRow();
catalogEntryRow.ApplicationId = CatalogConfiguration.Instance.ApplicationId;
dto.CatalogEntry.AddCatalogEntryRow(catalogEntryRow);
target.SaveCatalogEntry(dto);
You can also create objects from DTO objects. For example, there is a constructor for CatalogNode that lets you pass a CatalogNodeRow in:
public CatalogNode(CatalogNodeDto.CatalogNodeRow input)
Catalog pricing, tiered pricing and custom sale types offer flexible ways to define multiple prices for products. Refer to Pricing for more information.
Last updated: Oct 12, 2015