b2c-metadata

安装量: 60
排名: #12342

安装

npx skills add https://github.com/salesforcecommercecloud/b2c-developer-tooling --skill b2c-metadata

Metadata Skill This skill guides you through working with site metadata XML for Salesforce B2C Commerce, including custom attributes, custom objects, and site preferences. Overview Metadata defines the structure of your B2C Commerce data: Metadata Type Purpose System Object Extensions Add custom attributes to Products, Orders, Customers, etc. Custom Objects Define entirely new data types Site Preferences Site-specific configuration values Site Archive Structure Metadata is organized in site archives: /site-archive /meta system-objecttype-extensions.xml # Custom attributes on system objects custom-objecttype-definitions.xml # Custom object definitions /sites /MySite preferences.xml # Site preferences System Object Extensions Add custom attributes to existing system objects. Basic Structure

< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "

< type-extension type-id = " Product "

< custom-attribute-definitions

< attribute-definition attribute-id = " myCustomAttribute "

< display-name xml: lang = " x-default "

My Custom Attribute </ display-name

< type

string </ type

< mandatory-flag

false </ mandatory-flag

< externally-managed-flag

false </ externally-managed-flag

</ attribute-definition

</ custom-attribute-definitions

< group-definitions

< attribute-group group-id = " MyCustomGroup "

< display-name xml: lang = " x-default "

My Custom Group </ display-name

< attribute attribute-id = " myCustomAttribute " /> </ attribute-group

</ group-definitions

</ type-extension

</ metadata

Common System Objects Object Type Use Case Product Product attributes Order Order metadata Profile Customer profile data Basket Cart data SitePreferences Site configuration Category Category attributes Content Content asset attributes Attribute Types Type Description Example string Text (max 4000 chars) SKU, descriptions text Long text (unlimited) Rich content int Integer Quantity, rank double Decimal Percentage, weight boolean true/false Flags date Date only Birth date datetime Date and time Timestamps email Email address Contact email password Encrypted API keys html HTML content Rich text enum-of-string Single select Status enum-of-int Numeric enum Priority level set-of-string Multi-select Tags set-of-int Numeric multi-select Categories image Image reference Thumbnails Enum Value Definitions Enum types ( enum-of-string , enum-of-int , set-of-string , set-of-int ) require value-definitions with value/display pairs : < attribute-definition attribute-id = " warrantyType "

< display-name xml: lang = " x-default "

Warranty Type </ display-name

< type

enum-of-string </ type

< mandatory-flag

false </ mandatory-flag

< value-definitions

< value-definition

< value

none </ value

< display xml: lang = " x-default "

No Warranty </ display

</ value-definition

< value-definition

< value

limited </ value

< display xml: lang = " x-default "

Limited Warranty </ display

</ value-definition

< value-definition

< value

full </ value

< display xml: lang = " x-default "

Full Warranty </ display

</ value-definition

</ value-definitions

</ attribute-definition

Element Purpose The stored/API value (use lowercase, no spaces) Human-readable label shown in Business Manager Product Custom Attribute Example

< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "

< type-extension type-id = " Product "

< custom-attribute-definitions

< attribute-definition attribute-id = " vendorSKU "

< display-name xml: lang = " x-default "

Vendor SKU </ display-name

< type

string </ type

< mandatory-flag

false </ mandatory-flag

< externally-managed-flag

true </ externally-managed-flag

</ attribute-definition

< attribute-definition attribute-id = " productCondition "

< display-name xml: lang = " x-default "

Product Condition </ display-name

< type

enum-of-string </ type

< mandatory-flag

false </ mandatory-flag

< value-definitions

< value-definition

< value

new </ value

< display xml: lang = " x-default "

New </ display

</ value-definition

< value-definition

< value

refurbished </ value

< display xml: lang = " x-default "

Refurbished </ display

</ value-definition

< value-definition

< value

used </ value

< display xml: lang = " x-default "

Used </ display

</ value-definition

</ value-definitions

</ attribute-definition

< attribute-definition attribute-id = " isHazardous "

< display-name xml: lang = " x-default "

Hazardous Material </ display-name

< type

boolean </ type

< mandatory-flag

false </ mandatory-flag

< default-value

false </ default-value

</ attribute-definition

< attribute-definition attribute-id = " productFeatures "

< display-name xml: lang = " x-default "

Product Features </ display-name

< type

set-of-string </ type

< mandatory-flag

false </ mandatory-flag

< value-definitions

< value-definition

< value

waterproof </ value

< display xml: lang = " x-default "

Waterproof </ display

</ value-definition

< value-definition

< value

recyclable </ value

< display xml: lang = " x-default "

Recyclable </ display

</ value-definition

</ value-definitions

</ attribute-definition

</ custom-attribute-definitions

< group-definitions

< attribute-group group-id = " CustomProductInfo "

< display-name xml: lang = " x-default "

Custom Product Information </ display-name

< attribute attribute-id = " vendorSKU " /> < attribute attribute-id = " productCondition " /> < attribute attribute-id = " isHazardous " /> < attribute attribute-id = " productFeatures " /> </ attribute-group

</ group-definitions

</ type-extension

</ metadata

Custom Object Definitions Create entirely new data types.

< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "

< custom-type type-id = " StoreLocations "

< display-name xml: lang = " x-default "

Store Locations </ display-name

< description xml: lang = " x-default "

Physical store information </ description

< staging-mode

source-to-target </ staging-mode

< storage-scope

site </ storage-scope

< key-definition attribute-id = " storeId "

< display-name xml: lang = " x-default "

Store ID </ display-name

< type

string </ type

< min-length

1 </ min-length

</ key-definition

< attribute-definitions

< attribute-definition attribute-id = " storeName "

< display-name xml: lang = " x-default "

Store Name </ display-name

< type

string </ type

< mandatory-flag

true </ mandatory-flag

</ attribute-definition

< attribute-definition attribute-id = " latitude "

< display-name xml: lang = " x-default "

Latitude </ display-name

< type

double </ type

</ attribute-definition

< attribute-definition attribute-id = " longitude "

< display-name xml: lang = " x-default "

Longitude </ display-name

< type

double </ type

</ attribute-definition

< attribute-definition attribute-id = " phone "

< display-name xml: lang = " x-default "

Phone </ display-name

< type

string </ type

</ attribute-definition

< attribute-definition attribute-id = " isActive "

< display-name xml: lang = " x-default "

Active </ display-name

< type

boolean </ type

< default-value

true </ default-value

</ attribute-definition

</ attribute-definitions

< group-definitions

< attribute-group group-id = " StoreInfo "

< display-name xml: lang = " x-default "

Store Information </ display-name

< attribute attribute-id = " storeId " system = " true " /> < attribute attribute-id = " storeName " /> < attribute attribute-id = " latitude " /> < attribute attribute-id = " longitude " /> < attribute attribute-id = " phone " /> < attribute attribute-id = " isActive " /> </ attribute-group

</ group-definitions

</ custom-type

</ metadata

Site Preferences Site-specific configuration via custom attributes on SitePreferences. Metadata (system-objecttype-extensions.xml)

< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "

< type-extension type-id = " SitePreferences "

< custom-attribute-definitions

< attribute-definition attribute-id = " enableFeatureX "

< display-name xml: lang = " x-default "

Enable Feature X </ display-name

< type

boolean </ type

< default-value

false </ default-value

</ attribute-definition

< attribute-definition attribute-id = " apiEndpoint "

< display-name xml: lang = " x-default "

API Endpoint </ display-name

< type

string </ type

</ attribute-definition

< attribute-definition attribute-id = " maxItemsPerPage "

< display-name xml: lang = " x-default "

Max Items Per Page </ display-name

< type

int </ type

< default-value

20 </ default-value

</ attribute-definition

</ custom-attribute-definitions

< group-definitions

< attribute-group group-id = " CustomSettings "

< display-name xml: lang = " x-default "

Custom Settings </ display-name

< attribute attribute-id = " enableFeatureX " /> < attribute attribute-id = " apiEndpoint " /> < attribute attribute-id = " maxItemsPerPage " /> </ attribute-group

</ group-definitions

</ type-extension

</ metadata

Values (sites/MySite/preferences.xml) Preferences can be set per instance type (development, staging, production) or for all instances:

< preferences xmlns = " http://www.demandware.com/xml/impex/preferences/2007-03-31 "

< custom-preferences

< all-instances

< preference preference-id = " maxItemsPerPage "

25 </ preference

</ all-instances

< development

< preference preference-id = " enableFeatureX "

true </ preference

< preference preference-id = " apiEndpoint "

https://dev-api.example.com/v1 </ preference

</ development

< staging

< preference preference-id = " enableFeatureX "

true </ preference

< preference preference-id = " apiEndpoint "

https://staging-api.example.com/v1 </ preference

</ staging

< production

< preference preference-id = " enableFeatureX "

false </ preference

< preference preference-id = " apiEndpoint "

https://api.example.com/v1 </ preference

</ production

</ custom-preferences

</ preferences

Access in Code var Site = require ( 'dw/system/Site' ) ; var enableFeatureX = Site . current . getCustomPreferenceValue ( 'enableFeatureX' ) ; var apiEndpoint = Site . current . getCustomPreferenceValue ( 'apiEndpoint' ) ; var maxItems = Site . current . getCustomPreferenceValue ( 'maxItemsPerPage' ) ; Attribute Definition Options < attribute-definition attribute-id = " myAttribute "

< display-name xml: lang = " x-default "

Display Name </ display-name

< description xml: lang = " x-default "

Description for BM tooltip </ description

< type

string </ type

< localizable-flag

false </ localizable-flag

< mandatory-flag

false </ mandatory-flag

< externally-managed-flag

false </ externally-managed-flag

< visible-flag

true </ visible-flag

< site-specific-flag

false </ site-specific-flag

< order-required-flag

false </ order-required-flag

< searchable-flag

false </ searchable-flag

< min-length

0 </ min-length

< max-length

256 </ max-length

< default-value

default </ default-value

< select-mode

none </ select-mode

< unit

kg </ unit

</ attribute-definition

Flag Purpose localizable-flag Can have different values per locale mandatory-flag Required in BM externally-managed-flag Read-only in BM visible-flag Shown in BM site-specific-flag Different value per site order-required-flag Required for order export searchable-flag Indexed for search Best Practices Use attribute groups to organize in Business Manager Prefix custom attributes with organization name (e.g., acme_myAttribute ) Set externally-managed for data imported from external systems Use enums over strings for controlled vocabularies Document with descriptions - they appear as tooltips Detailed Reference System Objects Reference - All system object types XML Examples - Complete import/export examples

返回排行榜