In this lesson, you retrieve an XSL template
for the new promotion type and learn about its structure. You then
register it as a new promotion rule. The purpose of the XSL template
is to transform the authoring promotion XML into the runtime promotion
XML. This transformation takes place when a promotion based on this
promotion type is activated in the Management Center.
About this task
The XSL template you need is provided for you at a link in
the following procedure, so you do not need to create it from scratch
for this tutorial. This new XSL template must be registered in the
promotion configuration registry as a new promotion rule. This is
a requirement before you can enable the new promotion type. For detailed
information about XSL template functions, see Creating a custom promotion type in the Management Center.
Procedure
- Create a new directory for the XSL template:
- Locate the WC_eardir/xml/config directory.
- Under the config folder, add two
new folders to create the directory structure WC_eardir/xml/config/com.ibm.commerce.promotion-ext/template.
- Download the ProductLevelFreeGiftPurchaseConditionTemplate.xsl file.
- Copy the file into the template folder.
- Open the file with any XML or text editor, and then observe
the main characteristics of the ProductLevelFreeGiftPurchaseConditionTemplate.xsl
template:
- The main section of the XSL file is <xsl:template name="PurchaseConditionTemplate"
match="/">, which defines the transformation template for the purchase
condition. In the first lesson in this tutorial, you learned that
the purchase condition is the key element of the new promotion type.
- Under PurchaseConditionTemplate, there are two main elements that
can be mapped to the corresponding runtime promotion XML elements, <Pattern>
and <Distribution>.
- There are some variables in the template, which are used to transform
the authoring promotion XML data into the runtime promotion XML data.
They use the element <xsl:value-of> to retrieve the data, for example:
<LowerBound><xsl:value-of
select="PromotionData/Elements/PurchaseCondition/Data/BaseItemTotalPrice" /></LowerBound>
- For some elements, there may be multiple instances; the template
uses the <xsl:for-each> element to retrieve the multiple values
for the elements, for example:
<xsl:for-each select="PromotionData/Elements/PurchaseCondition/IncludeCatalogEntryIdentifier">
- Register the XSL template.
To do this, you create
a file that tells the promotion service which XSL templates to use
to transform the authoring promotion XML to the runtime promotion
XML. You reference your customized XSL template in this file.
- In the folder WC_eardir/xml/config/com.ibm.commerce.promotion-ext,
create a new file called com.ibm.commerce.promotion.facade.server.config.PromotionComponentConfigurationImpl.xml.
- Open the file with an XML or text editor and copy the
following code into it:
<promotionComponentRegistry impl="com.ibm.commerce.promotion.facade.server.config.PromotionComponentRegistry"
promotionTemplateRelativePath="template">
<promotionTypeConfiguration name="ProductLevelFreeGift" >
<param key="purchaseConditionTemplate" value="ProductLevelFreeGiftPurchaseConditionTemplate.xsl"/>
<param key="basePromotionTemplate" value="DefaultBasePromotionTemplate.xsl"/>
<param key="customConditionTemplate" value="DefaultCustomConditionsTemplate.xsl"/>
<param key="targetingConditionTemplate" value="DefaultTargetingConditionTemplate.xsl"/>
<param key="promotionGroup" value="ProductLevelPromotion"/>
<param key="calculationCodeDisplayLevel" value="0"/>
</promotionTypeConfiguration>
</promotionComponentRegistry>
In the previous
code example, observe the fourth line, which appears in boldface text.
This line registers the new customized XSL template. The other templates
referenced here are the default XSL templates. You can use these default
template versions because you did not customize these parts of your
promotion.
Also, observe the last two parameters, promotionGroup
and calculationCodeDisplayLevel.
- promotionGroup: This parameter references the promotion group
that the promotion type belongs to, that is, order-level, product-level,
or shipping.
- calculationCodeDisplayLevel: This parameter defines what customers
see on the storefront regarding the promotion price adjustment. The
value 0 (order item display level) means a customer sees the adjustment
broken down for each individual item in their order. The value 1 (order
display level) means the customer sees the adjustment for the whole
order in a summary.
- Save and close the file.
- Restart the WebSphere Commerce test server to load
the new XSL template and XSL registry.
Results
You have now completed all the steps to create a new promotion
type. In the remaining lessons, you will verify the new promotion
type in the Management Center and on the storefront.