Generating Commerce Composer widget source code
Procedure
- Start HCL Commerce Developer.
-
Create a temporary project in your HCL Commerce Developer workspace. This project is
used as the target location where the Java Emitter Template (JET) Transformation generates the
source code files for creating your widget.
- Right-click within the Enterprise Explorer view. Select New > Project.
- In the New Project wizard, expand General. Select Project. Click Next.
-
For the Project name field, enter a name for the temporary
project.
For example, NewWidgetProject.
- Click Finish.
-
In your temporary NewWidgetProject project, create an XML file to use as a
pattern input file for the JET Transformation. The pattern input XML file that you create is used by
the JET Transformation to create the widget source code files by using the properties and attributes
that you specify within the file. The JET Transformation creates all of the files and code that is
required to create a widget. The input file can be copied and edited for future use to help you
generate the source code for creating other custom widgets.
- Right-click the temporary NewWidgetProject project. Select New > File.
-
In the New File wizard, ensure that your temporary project is selected as
the parent folder. Enter a File name for the pattern input XML file.
For example, NewWidgetPatternInputFile.xml.
- Click Finish.
- Right-click your new pattern input XML file within your temporary project. Select Open With > XML Editor.
-
Copy the following code into the file:
<pageLayout vendor="" targetFolder=""> <widget> <widgetDef identifier="" UIObjectName="" displayName="" description="" widgetDisplayGroups=""> widgetRestrictionGroups="" > <property name="" displayName=""/> <property name="" displayName=""/> </widgetDef> <widgetGroup identifier="" displayName="" /> </widget> </pageLayout>
-
Update the copied code to specify the information that the JET Transformation is to use to
create your widget source code. Ensure that you include any required information.
Note: Do not include spaces or special characters in the values for the following parameters. Including spaces or special characters for these parameters can cause errors:
vendor
(pageLayout)targetFolder
(pageLayout)identifier
(all instances)UIObjectName
(widgetDef)name
(property)
Widget information that can be included with the pattern input XML file: Input file parameter Required Description vendor
(pageLayout)Yes The name of your company. For example, myCompany
.The value for this attribute is included as the value for the
WidgetVendor
column within the generated registerWidgetdef.csv file. The registerWidgetdef.csv is used to register your custom widget with the Commerce Composer framework.targetFolder
(pageLayout)No The folder or project path where the source code files are to be generated. The path to the target folder is relative to your workspace directory". For example, you can set the value for the target folder to be the temporary project that you created. If your project is a top-level directory within your workspace, specify the name of your project, such as NewWidgetProject, as the target folder. If the value for the attribute is not specified, the files are generated within the same folder or project that contains the pattern input XML file for the JET Transformation.
widgetDef
(widget)No If you are creating a widget, you must include this element.
If you are using this pattern XML and the JET Transformation to create only the files for defining a widget display group do not include this element. For more information about defining widget groups, see Creating Commerce Composer widget groups.
Element that includes attributes to define the widget definition. This definition must be loaded into the HCL Commerce database with the Data Load utility to register your widget. This information is also used to help define the corresponding widget object in the Commerce Composer tool. identifier
(widgetDef)Yes The external reference name for the widget or container definition. You can use any name, but the name must be unique for the store. For example, myNewContentRecommendationWidget
.The value for this attribute is included as the value for the
WidgetDefIdentifier
column within the generated registerWidgetdef.csv file.UIObjectName
(widgetDef)Yes The name that identifies the Management Center object and object definition of this widget. For example, myNewContentRecommendationWidgetObject
.When you create the object definition file that defines the widget for Management Center, you must specify this name for the
ui_object_name
attribute in the XML code. The value for this attribute is included as the value for theWidgetUIObjectName
column within the generated registerWidgetdef.csv file.displayName
(widgetDef)Yes The language-specific display name of the widget. For example, My New Content Recommendation Widget
.This name displays in the Commerce Composer tool to help business users identify the widget. The value for this attribute is included as the value for the
WidgetDisplayName
column within the generated registerWidgetdef.csv file.description
(widgetDef)Yes The language-specific description for the widget. For example, This widget displays marketing content, such as ads, on a store page
. You can specify an empty string as the value.The value for this attribute is included as the value for the
WidgetDescription
column within the generated registerWidgetdef.csv file.widgetDisplayGroups
(widgetDef)No Used to organize widgets in the Commerce Composer tool to help Management Center users filter the list of widgets in the Add Widgets to Slots window. When this is specified, an entry to define these groups is added to the generated object definition for your widget. For more information about defining widget display groups for widget, see Widget groups. widgetRestrictionGroups
(widgetDef)No Used to restrict the slots in layout templates to include only widgets from defined widget groups. When this is specified, an entry identifying these groups is added to the definition XML for your widget within the registerWidgetDef.csv file. For more information about defining widget restriction groups for a widget, see Widget groups. property
(widgetDef)No Include this element to generate property information for your widget. Include a separate property element within the widgetdef
element for each property that you want to specify for your widget. When you specify a property, the JET tool adds the property to the definition XML for your widget that is within the registerWidgetDef.csv file. An entry is also added to the generated Management Center definition files to help you define the property.name
(property)Yes (if the property
element is included.)The name of a property for your custom widget. For example, numberOfContentToDisplay
.The name and corresponding value for the property is included within the generated widget definition XML file for your custom widget.
If you specify a property name in the pattern input file, a property input type is generated for the property in the properties view definition file. The generated input type for the property is PropertyInputText by default. You can modify the properties view definition file to change the default input type to meet your widget requirements.
If no properties are specified, the generated widget source code creates a widget that displays the message 'Hello, world!' when the widget is included on a store page.
As an example of the properties that you can set for your widget, review the properties that are available and used for the widgets that are provided by default. For more information, see Commerce Composer widget properties.
displayName
(property)Yes (if the property
element is included.)The display name of a property for your custom widget. The display name is the name of the property that displays in Management Center. For example, Maximum number of content to display
.inputType
(property)No The input type for the property in Management Center. The generated input type for the property is PropertyInputText by default. You can modify the properties view definition file to change the default input type to meet your widget requirements. widgetGroup
(widget)No If your widget is included within a widget display group that is not provided by default, include thiswidgetGroup
element. By including this element, the JET Transformation generates the source code to help you define your new widget display group.Note: If you are including your widget within a new widget restriction group, do not include and information for the group within this element.Grouping widgets can be used to determine which widgets show in the Add Widgets to Slots window in the Commerce Composer tool. Note: If you want to include your widget in multiple new widget display groups, include the information for only one display group in this element. The JET Transformation creates the source code to define only one widget display group. To include your widget in more widget display groups, update the generated source code.identifier
(widgetGroup)Yes (if the widgetGroup
element is included.)The external reference name for the widget display group. You can use any name, but the name must be unique for the store. By default, HCL Commerce includes the following widget display group identifiers: - AnyPage
- CategoryPage
- SearchPage
- CatalogEntryPage
displayName
(widgetGroup)Yes (if the widgetGroup
element is included.)The language-specific display name of the widget display group. By default, HCL Commerce includes the following widget display group display names: - Widgets for any page
- Category Page Widgets
- Search Results Page Widgets
- Catalog Entry Page Widgets
You can include multiple properties for your custom widget in the input file. Each of the properties that you specify are included within the generated widget definition XML file. This definition XML is included as the value for the
WidgetDefinitionxml
column in the registerWidgetdef.csv file. If you specify all of the properties for your widget within the pattern input file, you can use the JET Transformation to make creating the definition XML for your widget within the registerWidgetdef.csv file easier. -
Save and close the file.
The following code provides an example of an updated pattern input XML file:
<pageLayout vendor="myCompany" targetFolder="NewWidgetProject"> <widget> <widgetDef identifier="myNewContentRecommendationWidget" UIObjectName="myNewContentRecommendationWidgetObject" displayName="My New Content Recommendation Widget" description="This widget displays marketing content, such as ads, on a store page" widgetDisplayGroups="AnyPage,SearchPage" widgetRestrictionGroups="AnyPage,SearchPage" > <property name="widgetOrientation" displayName="Widget Orientation"/> <property name="numberOfContentToDisplay" displayName="Maximum number of content to display"/> </widgetDef> </widget> </pageLayout>
-
Use the JET Transformation to generate the source code files for creating your custom widget.
- Right-click your pattern input XML file. Select Run As > Run Configurations.
- In the Run Configurations wizard, double-click JET Transformation from the list of filters. The configuration options for the JET Transformation display.
- Ensure that the value of the Name field is the name of your pattern input XML file.
-
In the Main tab, ensure that the value of the Transformation
Input field is the file path within your workspace to the pattern input XML file.
For example, NewWidgetProject\NewWidgetPatternInputFile.xml
-
In the Transformation section, select
com.ibm.commerce.toolkit.internal.pattern.pageLayout for the value of the
ID field. Note: The com.ibm.commerce.toolkit.internal.pattern.pageLayout_9.0.0.0.zip and com.ibm.commerce.toolkit.internal.pattern.rest_9.0.0.0.zip are located in the ${WCDE_install}/setup/plugins folder. Unzip these files and manually move their jar files to the ${RAD_install}/plugins folder to make ID available.This is a workaround for earlier versions of HCL Commerce 9.
- From the version 8 toolkit, copy {WCDE_V8Install}/setup/plugins/com.ibm.commerce.toolkit.internal.pattern.pageLayout.zip to the version 9 toolkit {WCDE_V9Install}/setup/plugins folder.
- Run the setupPlugins.bat script from the {WCDE_V9Install}/bin folder.
For more information, see http://www-01.ibm.com/support/docview.wss?uid=swg1JR59956.
- Optional: Specify the severity level for the Display Message logging. The default value is information.
-
Click Apply > Run.
The JET Transformation generates the file directories and files for your custom widget at the location you specified in the
targetFolder
parameter in the pattern input XML file. -
Verify that the JET Transformation created the following directories and files.
Where
- vendor
- The value for the
vendor
parameter within the pattern input XML file. - identifier
- The value for the
identifier
parameter within the pattern input XML file. - UIObjectName
- The value for the UIObjectName parameter within the pattern input XML file.
- target_folder
- The folder or project that you specified as the value for the
targetFolder
parameter in the pattern input XML file. If you did not specify a value for thetargetFolder
parameter, the target_folder is the folder or project where the pattern input XML file is located. - WidgetGroupIdentifier
- The value for the
identifier
element within thewidgetGroup
element within the pattern input XML file.
Storefront asset files for defining your widget- identifier.jsp
- File location - target_folder\Stores\WebContent\Widgets-vendor\com.vendor.commerce.store.widgets.identifier\identifier.jsp
- identifier_Data.jspf
- File location - target_folder\Stores\WebContent\Widgets-vendor\com.vendor.commerce.store.widgets.identifier\identifier_Data.jspf
- identifier_UI.jspf
- File location - target_folder\Stores\WebContent\Widgets-vendor\com.vendor.commerce.store.widgets.identifier\identifier_UI.jspf
- MyWidgetText_en_US.properties
- File location - target_folder\Stores\WebContent\Widgets-vendor\Properties\MyWidgetText_en_US.properties
- MyWidgetText.properties
- File location - target_folder\Stores\WebContent\Widgets-vendor\Properties\MyWidgetText.properties
- target_folder\Stores\WebContent\Widgets-vendor\com.vendor.commerce.store.widgets.identifier\javascript
- target_folder\Stores\WebContent\Widgets-vendor\Common
- target_folder\Stores\WebContent\Widgets-vendor\images
Data Load utility files for registering and subscribing stores to your widget- registerWidgetdef.csv
- File location - target_folder\DataLoad\widget\registerWidgetdef.csv
- subscribeWidgetDef.csv
- File location - target_folder\DataLoad\widget\subscribeWidgetDef.csv
- wc-dataload-widget.xml
- File location - target_folder\DataLoad\widget\wc-dataload-widget.xml
- wc-dataload-env.xml
- File location - target_folder\DataLoad\wc-dataload-env.xml
- wc-loader-registerWidgetdef.xml
- File location - target_folder\DataLoad\wc-loader-registerWidgetdef.xml
- wc-loader-subscribeWidgetdef.xml
- File location - target_folder\DataLoad\wc-loader-subscribeWidgetdef.xml
Files for adding Management Center support for your widget- PageLayoutLOB_en_US.properties
- File location - target_folder\LOBTools\src\com\vendor\commerce\pagelayout\client\lobtools\properties\PageLayoutLOB_en_US.properties
- PageLayoutLOB.properties
- File location - target_folder\LOBTools\src\com\vendor\commerce\pagelayout\client\lobtools\properties\PageLayoutLOB.properties
- WidgetObjectDefinition.xml
- File location - target_folder\LOBTools\WebContent\config\vendor\pagelayout\widgetDefinitions\UIObjectName\WidgetObjectDefinition.xml
- WidgetPropertiesView.xml
- File location - target_folder\LOBTools\WebContent\config\vendor\pagelayout\widgetDefinitions\UIObjectName\WidgetPropertiesView.xml