* Move lwr site SKILL.md * Move bootstrap-template-byo-lwr.md * Move configure-content-brandingSet.md * Move configure-content-route.md * Move configure-content-themeLayout.md * Move configure-content-view.md * Move configure-guest-sharing-rules.md * Move handle-component-and-region-ids.md * Move handle-ui-components.md * Create react site SKILL.md * Create configure-metadata-custom-site.md * Create configure-metadata-digital-experience-bundle.md * Create configure-metadata-digital-experience-config.md * Create configure-metadata-digital-experience.md * Create configure-metadata-network.md --------- Co-authored-by: Hemant Singh Bisht <hsinghbisht@salesforce.com>
8.0 KiB
Content Type: sfdc_cms__route
Use when user explicitly requests creating a new page. Not for editing existing routes.
Table of Contents
- Generation Guidelines
- Core Principles
- Directory Structure (All Routes)
- _meta.json Structure
- Part A: CUSTOM PAGES
- Part B: OBJECT PAGES
Generation Guidelines
PAGE TYPES: These guidelines supports two types of pages:
- Custom Pages - Single route pages for custom content (e.g., About Us). Note: Standard pages (e.g., Home, Login) come pre-built with the site and cannot be created.
- Object Pages - Requires 3 routes: Detail, List, and Related List (e.g., Account, custom objects)
Core Principles
- Purpose: Generate new routes under the
sfdc_cms__routedirectory. - View Association: Each route must reference a corresponding view in the
sfdc_cms__viewdirectory. - CRITICAL: The
routeTypein the route'scontent.jsonMUST exactly match theviewTypein the corresponding view'scontent.json. This is a required validation rule.
Directory Structure (All Routes)
- Location:
digitalExperiences/site/[SITE_NAME]/sfdc_cms__route/[ROUTE_NAME]/ - Required Files:
_meta.json- Metadata file defining the API name and typecontent.json- Content file defining the configuration and layout
- Naming Convention: Underscore-separated names with "__c" suffix (About_Us__c, Account_Detail__c)
_meta.json Structure (All Routes)
The _meta.json file must contain:
{
"apiName": "[ROUTE_NAME]",
"type": "sfdc_cms__route",
"path": "routes"
}
Rules:
apiName: Must match the route directory name exactlytype: Always"sfdc_cms__route"path: Always"routes"
Part A: CUSTOM PAGES
Use this section when creating single-route custom content pages.
A.1. content.json Structure
The content.json file must contain:
{
"type": "sfdc_cms__route",
"title": "[DISPLAY_TITLE]",
"contentBody": {},
"urlName": "[URL_NAME]"
}
Field Definitions:
type: Always"sfdc_cms__route"title: Human-readable display title (e.g., About Us)contentBody: Include allrequiredproperties fromschemaDefinition. UseexamplesOfContentTypefor reference.urlName: URL identifier (lowercase with hyphens, e.g.,about-us)
A.2. Naming Conventions
For a page named "About Us":
| Field | Format | Example |
|---|---|---|
| Directory Name | Underscore-separated + "__c" | About_Us__c |
| apiName | Same as directory | About_Us__c |
| title | Human-readable | About Us |
| contentBody.activeViewId | Underscore-separated (no __c) | About_Us |
| contentBody.routeType | "custom-" + lowercase hyphens | custom-about-us |
| contentBody.urlPrefix | Lowercase hyphens | about-us |
| urlName | Lowercase hyphens | about-us |
CRITICAL: routeType MUST exactly match viewType in the corresponding view's content.json.
A.3. View Dependency
- Before creating a route, ensure the corresponding view exists in
sfdc_cms__view/[view_name]/ - If the view doesn't exist, create it first following the view creation guidelines
A.4. Generation Checklist
- Route directory and files created (see Directory Structure)
_meta.jsonfollows structure (see _meta.json Structure)content.jsonfollows structure (see A.1)- All naming conventions applied (see A.2)
- Corresponding view exists (see A.3)
Part B: OBJECT PAGES
Use this section when creating object pages that require Detail, List, and Related List routes.
B.1. Overview
Object pages require three routes to be created together:
- Detail Route - Displays a single record
- List Route - Displays a list of records
- Related List Route - Displays related records for a parent record
OBJECT TYPES: Two types of Salesforce objects use different routeType formats:
| Object Type | routeType Format | Example |
|---|---|---|
| Standard (Account, Contact) | [type]-[keyPrefix] |
detail-001, list-001, relatedlist-001 |
| Custom (Test_Object__c) | [type]-[ObjectApiName] |
detail-Test_Object__c, list-Test_Object__c |
- keyPrefix: 3-character identifier unique to each standard object (Account=001, Contact=003)
- ObjectApiName: Custom object API name including the "__c" suffix
Obtain object information from the objectList MCP output:
[
["Label", "ApiName", "KeyPrefix", "IsCustom"]
]
B.2. Required Routes
Create three directories under sfdc_cms__route/:
[OBJECT_NAME]_Detail__c/[OBJECT_NAME]_List__c/[OBJECT_NAME]_Related_List__c/
B.3. content.json Structure
Each route's content.json file must contain:
{
"type": "sfdc_cms__route",
"title": "[OBJECT_NAME] [TYPE]",
"contentBody": {},
"urlName": "[object_name_lowercase]-[type]"
}
Field Definitions:
type: Always"sfdc_cms__route"title: Human-readable title (Account Detail, Account List)contentBody: Include allrequiredproperties fromschemaDefinition. UseexamplesOfContentTypefor reference.contentBody.urlPrefix: CRITICAL: Must be identical across all three object page views (Detail, List, and Related List) for the same object.urlName: Lowercase with hyphens (account-detail, account-list)
B.4. Object Page Examples
Use [ObjectName] as the object name (Account, Test_Object) and [IDENTIFIER] as:
- Standard objects: keyPrefix (001 for Account, 003 for Contact)
- Custom objects: ObjectApiName (Test_Object__c)
content.json Template
{
"type": "sfdc_cms__route",
"title": "[ObjectName] [Detail|List|Related List]",
"contentBody": {
"activeViewId": "[ObjectName]_[Detail|List|Related_List]",
"configurationTags": [],
"pageAccess": "UseParent",
"routeType": "[detail|list|relatedlist]-[IDENTIFIER]",
"urlPrefix": "[object-name-lowercase]"
},
"urlName": "[object-name-lowercase]-[detail|list|related-list]"
}
Rules:
- Before any actions, always call
execute_metadata_actionto get the full schema and examples per the skill document.
routeType Examples
| Route Type | Standard (Account) | Custom (Test_Object__c) |
|---|---|---|
| Detail | detail-001 |
detail-Test_Object__c |
| List | list-001 |
list-Test_Object__c |
| Related List | relatedlist-001 |
relatedlist-Test_Object__c |
B.5. Naming Conventions
For an object named "Account":
| Field | Detail | List | Related List |
|---|---|---|---|
| Directory Name | Account_Detail__c |
Account_List__c |
Account_Related_List__c |
| apiName | Account_Detail__c |
Account_List__c |
Account_Related_List__c |
| title | Account Detail |
Account List |
Account Related List |
| activeViewId | Account_Detail |
Account_List |
Account_Related_List |
| routeType (Standard) | detail-[keyPrefix] |
list-[keyPrefix] |
relatedlist-[keyPrefix] |
| routeType (Custom) | detail-[ObjectApiName] |
list-[ObjectApiName] |
relatedlist-[ObjectApiName] |
| urlPrefix | account |
account |
account |
| urlName | account-detail |
account-list |
account-related-list |
CRITICAL: routeType MUST exactly match viewType in the corresponding view's content.json.
B.6. View Dependency
- Before creating routes, ensure corresponding views exist in
sfdc_cms__view/:[ObjectName]_Detail/,[ObjectName]_List/,[ObjectName]_Related_List/
activeViewIdmust match the view directory name exactlyrouteTypemust exactly matchviewTypein the corresponding view- If views don't exist, create them first following the view creation guidelines
B.7. Generation Checklist
- Object type determined (Standard or Custom) and identifier obtained (keyPrefix or ObjectApiName)
- All three routes created: Detail, List, and Related List, each with
_meta.jsonandcontent.json - All naming conventions applied (see B.5)
- Corresponding views exist (see B.6)
routeTypematchesviewTypefor all three routes