Customizing the UI in Umbraco Commerce.
With Umbraco Commerce, there are minimal rules about what information you are required to record about an Order, however, this does pose a problem for how we provide a User Interface for managing carts and orders when we don't know exactly what properties you are going to be recording.
In order to allow this flexibility whilst still providing the ability to view and manage carts and orders in the backoffice, Umbraco Commerce supports a number of UI config files to map Order/Order Line Properties to its UI elements.
The configuration files supported by Umbraco Commerce are.
cart.list.config.json - Cart list view configuration.
cart.editor.config.json - Cart editor view configuration.
order.list.config.json - Order list view configuration.
order.editor.config.json - Order editor view configuration.
If there are no cart config files defined, then Umbraco Commerce will fall back to the order config files.
To assign a UI config file to a Store, this is done by file name convention. This is where configs are looked for in wwwroot/App_Plugins/UmbracoCommerce/config
with the following file name format {storeAlias}.{entityType}.{viewType}.config.json
. If no store-specific file is found, it will fallback into the default {entityType}.{viewType}.config.json
.
With these configuration files, you can customize the columns displayed in the Cart/Order list view.
The following properties are supported:
Properties configured to display in the list view will appear in order, after the cart name column.
With these configuration files, you can customize the Cart/Order Editor interface to suit your particular needs.
An example of an Order Editor config file would look something like this:
The Cart/Order Editor config file is broken up into a series of sections, each of which relates to a particular section of the Cart/Order Editor User Interface.
The Order Line config block configures which Order Line properties should be viewable and/or manageable within the Cart/Order Editor UI. For each Order Line Property, you can provide the following options:
Properties configured to display in the Order Line Summary will be displayed inline next to the "Order Lines SKU
" as follows:
Where there are editable Order Line Properties for an Order Line, a pencil icon is displayed next to the Order Lines Product name which when clicked will open out the Order Line Property editor interface for that Order Line.
The Customer config block configures which Cart/Order properties relate to a Cart/Orders customer information. The following properties are supported.
Any missing property definition in this config block will disable that property from displaying/being editable.
For each property, the following config options are available:
A fully configured Customer config block will produce a Customer summary like so:
Clicking the Customer Details Edit
button will display an editing interface like so:
The Billing config block configures which Cart/Order properties relate to a Cart/Orders billing information. The following properties are supported.
In addition to these properties, the order.PaymentInfo
Country/Region will be associated with the billing address.
Any missing property definition in this config block will disable that property from displaying/being editable.
For each property, the following config options are available:
A fully configured Billing config block will produce a Billing Address summary like so:
Clicking the Customer Details Edit
button will display an editing interface like so:
The Shipping config block configures which Cart/Order properties relate to a Cart/Orders shipping information. The following properties are supported.
In addition to these properties, the order.ShippingInfo
Country/Region will be associated with the shipping address.
Any missing property definition in this config block will disable that property from displaying/being editable.
For each property, except enabled
or sameAsBilling
, the following config options are available:
For the sameAsBilling
property, the following config options are available:
A fully configured Shipping config block, where the sameAsBilling
property is false
, will produce a Shipping Address summary like so:
Where as, a fully configured Shipping config block, where the sameAsBilling
property is true
, will produce a Shipping Address summary like so:
Clicking the Customer Details Edit
button will display an editing interface like so:
If the sameAsBilling
toggle switch is toggled, the appropriate Cart/Order property will be toggled between the configured Properties true/false values, and the editor interface will be collapsed like so:
The Notes config block configures which Cart/Order properties relate to a Cart/Orders note information. The following properties are supported.
Any missing property definition in this config block will disable that property from displaying/being editable.
For each property the following config options are available:
A fully configured Notes config block will produce an editor interface like so:
The Additional Info config block configures any other Cart/Order properties you wish to display in the Cart/Order editor interface in the Additional Info section. For each Order Property to display you can provide the following options:
A fully configured Additional Info config block will produce an Additional Info summary interface like so:
Clicking the Additional Info Edit
button will display an editing interface like so:
If you wish to entirely replace the Cart/Order Editor view with a custom implementation you can create a Cart/Order Editor Config file with a single view
config option which points to the path of an alternative AngularJS view file to use for editing the Order.
Name | Description |
---|---|
Name | Description |
---|---|
Key | Description |
---|---|
Name | Description |
---|---|
Key | Description |
---|---|
Name | Description |
---|---|
Key | Description |
---|---|
Name | Description |
---|---|
Name | Description |
---|---|
Key | Description |
---|---|
Name | Description |
---|---|
Name | Description |
---|---|
alias
The alias of the Order property to use
label
A label to display as the table column header
align
Sets the alignment of the column. Can be left
(default), center
or right
placeholder
The placeholder value to display if there is no Order property value
template
An angular template to use for rendering the property value. Defaults to {{ properties['alias'].value }}
alias
The alias of the Order Line property
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
template
An angular template to use for rendering the property value. Defaults to {{ properties['alias'].value }}
isReadOnly
Sets the property as read only and so doesn't provide a means of editing the value in the editor interface (Default: false
)
showInOrderLineSummary
Sets whether to display this property in the Order Lines summary next to the SKU
in the Order editor interface (Default: true
)
view
Sets the name or path of a Property Editor to use when editing this property
config
Defines a JSON config for the Property Editor if required
firstName
The customers first name. Uses the order.CustomerInfo.FirstName
system property
lastName
The customers last name. Uses the order.CustomerInfo.LastName
system property
email
The customers email address. Uses the order.CustomerInfo.Email
system property
company
The company the customer works for
taxCode
The tax code of the company the customer works for
telephone
The contact telephone number of the customer
alias
The alias of the Order property to use
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
view
Sets the name or path of a Property Editor to use when editing this property
config
Defines a JSON config for the Property Editor if required
addressLine1
Line 1 of the billing address
addressLine2
Line 2 of the billing address
city
The City of the billing address
zipCode
The Zip/Postal Code of the billing address
telephone
The telephone number of the billing address
alias
The alias of the Order property to use
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
view
Sets the name or path of a Property Editor to use when editing this property
config
Defines a JSON config for the Property Editor if required
enabled
Sets whether the collection of shipping information is enabled or not. If set to false
not shipping info will be displayed (Default: true
)
sameAsBilling
Determines the Order property to use as a flag to indicate the shipping address is the same as the billing address
firstName
The first name of the shipping contact
lastName
The last name of the shipping contact
addressLine1
Line 1 of the shipping address
addressLine2
Line 2 of the shipping address
city
The City of the shipping address
zipCode
The Zip/Postal Code of the shipping address
telephone
The telephone number of the shipping address
alias
The alias of the Order property to use
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
view
Sets the name or path of a Property Editor to use when editing this property
config
Defines a JSON config for the Property Editor if required
alias
The alias of the Order property to use
label
A friendly label to display next to a toggle switch for this property in the editor interface
trueValue
The value to expect for a true
value
falseValue
The value to expect for a false
value
customerNotes
The property to use for customer provided notes
internalNotes
The property to use to store internal notes that shouldn't be sent to the customer
alias
The alias of the Order property to use
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
alias
The alias of the Order property
label
A friendly label to display for this property in the editor interface
description
A friendly description to display for this property in the editor interface
template
An angular template to use for rendering the property value. Defaults to {{ properties['alias'].value }}
isReadOnly
Sets the property as read only and so doesn't provide a means of editing the value in the editor interface (Default: false
)
view
Sets the name or path of a Property Editor to use when editing this property
config
Defines a JSON config for the Property Editor if required