Professional Documents
Culture Documents
LWR Academy - January 2022
LWR Academy - January 2022
LWR Academy - January 2022
Experience Cloud
January 31, 2022
Starting soon
Please stand by ...
LWR Academy for
Experience Cloud
January 31, 2022
Raj Rao
031621
First, some logistics
Questions, answers and staying in touch.
Footer
Audience
Education. You will leave this session able to understand the differences between existing
Aura Experience Sites and the new LWR Experience Sites. You will be able to communicate
when to use Aura and when to use LWR for a customer implementation.
Implementation. You will leave this session with an understanding of how to set up,
configure, build, and deploy LWR Experience Sites. This will be the meat of the workshop and
will be hands on to ensure you are engaged. We will use a series of checkpoints and quizzes to
ensure everyone is up-to-speed on the platform.
Roadmap. You will leave this session with an understanding of the safe harbor roadmap of
LWR and the adjacent features. You will be aware of underlying changes we are making for
performance and scale and the features we are making for usability and ease of use.
Opportunity. You will leave this session knowing areas of opportunity for driving business
value. We know what’s possible with the platform. We can give helpful pointers and materials
on how to pitch LWR Experience Sites to customers.
Agenda
Experience
Builder and
Developer Tools
Themes Templates Components Runtimes
Platform First
Navigation
Build B2C Performant
Experiences on
Lightning Web Runtime
index.html home
Salesforce Functions
O
routes.json home.js FP
theme.json home.html
Lightning Web Runtime
components # home.css
Static
Experience Page
Dynamic
Salesforce
Components
Customer
Components
Partner / Vendor
Components
Generally
Available
Access CRM and Apex with ● Standard, Object, and Content Pages
100% LWC technologies ● Page Access and Authentication
● Referential Integrity
● Extensive Developer Docs (link)
Quiz #1
Lightning Web Runtime
What are some of the benefits of What are some of the benefits of
Lightning Web Runtime on Lightning Web Runtime on
Experience Cloud? Experience Cloud?
A. Built 100% with Lightning Web A. Built 100% with Lightning Web
Components Components
B. Leverages Static Site Generation B. Leverages Static Site Generation
C. Supports React and Angular C. Supports React and Angular
D. Both A and B D. Both A and B ✅
E. All of the Above E. All of the Above
Quiz #1
Lightning Web Runtime
Create a new Experience Site in the Experience Wizard (as seen below)
What do I need to buy to get BYO (LWR)?
My customer wants to build a food blog My customer wants to build a food blog
where their users can log in and save where their users can log in and save
their favorite recipes to their accounts. their favorite recipes to their accounts.
They want this on LWR. What solutions They want this on LWR. What solutions
should I recommend? should I recommend?
A. No SKU needed A. No SKU needed
B. Customer Community B. Customer Community
C. Salesforce CMS C. Salesforce CMS
D. Both Customer Community and D. Both Customer Community and
Salesforce CMS Salesforce CMS ✅
Quiz #2
BYO (LWR) Template
lightningCommunity__Theme_Layout
Building Components
customThemeLayoutExample.js
import { LightningElement } from 'lwc';
/**
* @slot themeHeader
* @slot themeFooter
*/
export default class CustomThemeLayoutExample extends LightningElement {}
customThemeLayoutExample.html customThemeLayoutExample.js-meta.xml
<template> <?xml version="1.0" encoding="UTF-8"?>
<header data-f6-region> <LightningComponentBundle
<slot name="themeHeader"></slot> xmlns="http://soap.sforce.com/2006/04/metadata"
</header> fqn="customThemeLayout">
<section data-f6-region> <apiVersion>52.0</apiVersion>
<slot></slot> <isExposed>true</isExposed>
</section> <masterLabel>
<footer data-f6-region> Custom Theme Layout with Header and Footer
<slot name="themeFooter"></slot> </masterLabel>
</footer> <description>A custom theme layout</description>
</template> <targets>
<target>lightningCommunity__Theme_Layout</target>
</targets>
</LightningComponentBundle>
How to Build a Custom LWC Page Layout
customPageLayoutExample.js
import { LightningElement } from 'lwc';
/**
* @slot pageHeader
* @slot pageFooter
*/
export default class CustomPageLayoutExample extends LightningElement {}
customPageLayoutExample.html customPageLayoutExample.js-meta.xml
<template> <?xml version="1.0" encoding="UTF-8"?>
<header> <LightningComponentBundle
<slot name="pageHeader"></slot> xmlns="http://soap.sforce.com/2006/04/metadata"
</header> fqn="customThemeLayout">
<footer data-f6-region> <apiVersion>52.0</apiVersion>
<slot name="pageFooter"></slot> <isExposed>true</isExposed>
</footer> <masterLabel>
</template> Custom Page Layout Example
</masterLabel>
<description>A custom page layout</description>
<targets>
<target>lightningCommunity__Page_Layout</target>
</targets>
</LightningComponentBundle>
How to Build a Custom LWC Navigation Menu
Custom
Profile LWC
Name
Type:
Optional Parameters
Demo
Custom Navigation Menu Component
How to Build a Custom LWC Navigation Menu
NavigationMenu.js-meta.xml
● NavigationMenuItemsController.cls Apex Class
<apiVersion>52.0</apiVersion>
● Lightning Web Components <isExposed>true</isExposed>
○ searchBar <masterLabel>Navigation Menu</masterLabel>
○ userProfile <description>Custom Navigation Menu</description>
○ navigationMenuItem <targets>
○ navigationMenu <target>lightningCommunity__Page</target>
<target>lightningCommunity__Default</target>
Additional Supporting Apex Class & Components </targets>
<targetConfigs>
● GlobalSearchController..cls Apex Class
<targetConfig targets="lightningCommunity__Default">
● Lightning Web Components
<property
○ searchResults name="menuName"
○ profileDetail type="String"
○ recordList datasource="apex://NavigationLinkSetPickList"
○ recordDetail label="Navigation Menu Name"
description="The name of the Navigation Menu Linkset, which can be configured in
@wire(getNavigationMenuItems, {
Settings > Navigation"
menuName: '$menuName', />
</targetConfig>
publishedState: '$publishedState'
</targetConfigs>
})
How to Build a Custom LWC Navigation Menu
NavigationMenu.js-meta.xml
<targetConfig targets="lightningCommunity__Default">
<property
name="menuName"
type="String"
datasource="apex://NavigationLinkSetPickList"
label="Navigation Menu Name"
description="The name of the Navigation Menu Linkset, which can be
configured in Settings > Navigation"
/>
NavigationLinkSetPickList.cls
global override VisualEditor.DynamicPickListRows getValues() {
VisualEditor.DynamicPickListRows picklistValues = new VisualEditor.DynamicPickListRows();
List<Network> network = [SELECT Id from Network WHERE Name = 'BYO LWR'];
List<NavigationLinkSet> navigationLinkSetList = [
SELECT MasterLabel, DeveloperName
FROM NavigationLinkSet WHERE NetworkId = :network[0].Id
How to Build a Custom LWC Navigation Menu
navigationMenu.js NavigationMenuItemsController.cls
wire(getNavigationMenuItems, { List<NavigationLinkSet> linkSets = [
menuName: '$menuName',
publishedState: '$publishedState' SELECT Id
}) FROM NavigationLinkSet
wiredMenuItems({error, data}) {
if (data && !this.isLoaded) { WHERE MasterLabel = :menuName AND NetworkId =
this.menuItems = data.map((item, index) => { :networkId
return {
target: item.Target, ];
indx: index, Id linkSetId = linkSets.get(0).Id;
id: item.Id,
label: item.Label, myList = [SELECT toLabel(Label), Target, Type, DefaultListViewId,
parentId: item.ParentId, AccessRestriction, Id,
position: item.Position,
defaultListViewId: item.DefaultListViewId, ParentId,Position,Status,TargetPrefs
type: item.Type, FROM NavigationMenuItem
accessRestriction: item.AccessRestriction
} WHERE NavigationLinkSetId = :linkSetId
}).filter(item => { AND Status = :publishedState ORDER BY ParentId, Position
// Only show "Public" items if guest user
return item.accessRestriction === "None" ];
|| (item.accessRestriction === "LoginRequired" && !isGuestUser); return myList;
How to Build a Custom LWC Navigation Menu
navigationMenu.js navigationMenu.js
Use Apex to fetch navigation menus for the LWC visual property editor
Invoke Apex method getNavigationMenus to retrieve menu items
Store the returned data in the menuItems object
Iterate over each menuItem and render a navigationMenuItem child component
navigationMenu.html
<template for:each={menuItems} for:item="item">
<template if:true={item.hasChildren}>
<li key={item.id}><c-navigation-menu-item onselectedsubmenu={handleSubMenuEvent} item={item}></c-navigation-menu-item>
How to Build a Custom LWC Navigation Menu
navigationMenuItem.js Navigation Menu
if (type === 'SalesforceObject') {
// aka "Salesforce Object" menu item
this.pageReference = {
type: 'standard__objectPage',
attributes: {
objectApiName: target
},
state: {
filterName: defaultListViewId
}
};
} else if (type === 'ExternalLink') {
this.pageReference = {
type: 'standard__webPage',
attributes: {
url: target
}
};
}
Quiz #3
Building Components
How can an ISV component ensure it How can an ISV component ensure it
works in an customer org when works in an customer org when
Locker is disabled? Locker is disabled?
A. Having API version above 50.0 A. Having API version above 50.0
B. Setting isExposed as true B. Setting isExposed as true
C. Adding the Relaxed CSP C. Adding the Relaxed CSP
capability capability ✅
D. None of the above D. None of the above
How to use your custom Navigation Menu LWC 15
Google Slides does not
have an image
Minutes
placeholder option.
<targetConfig targets="lightningCommunity__Default">
<property
type="ContentReference"
name="contentId"
label="Content ID"
filter="cms_image"
/>
</targetConfig>
Connecting Components to Data
How to build a CMS Property for LWC
What sources can one connect using What sources can one connect using
data binding? data binding?
A. CRM data from standard objects A. CRM data from standard objects
B. CRM data from custom objects B. CRM data from custom objects
C. CMS data from content types C. CMS data from content types
D. All of the above D. All of the above ✅
Data Binding
10
Google Slides does not
have an image
Minutes
placeholder option.
I want to create components that are I want to create components that are
reusable and easy to configure. How reusable and easy to configure. How
should I build my components? should I build my components?
A. Only use LWC properties for style A. Only use LWC properties for style
configurations configurations
B. Leverage SDS and DXP variables B. Leverage SDS and DXP variables
C. Use SLDS or base components as C. Use SLDS or base components as
much as possible much as possible
D. Both B and C D. Both B and C ✅
Call to Action
Experience Cloud Deliverables For 2021
Microsites & Landing Pages NEW!
Learning Journey
BECOME ACCREDITED
KNOW THE EXAM SHARPEN YOUR SKILLS PREP AND STUDY
PROFESSIONAL
● Access Partner Learning Camp. Learn at your own pace: Get ready for your exam
● Explore the Exam Guide ● Complete the Build Websites and ● Review Exam Guide once more
(coming soon) Portals with Salesforce CMS ● Explore related resources
● Join the Official: Experience
● Complete the CMS for Marketing
Cloud Partners Partner
Community Chatter Group ● Complete the CMS for B2B Commerce
Here are examples of the concepts you should understand to pass the exam: ● How to join Partner Community ● Salesforce Admin Certification
● Salesforce CMS Basics. ● How to use PLC is Encouraged,
● Salesforce CMS App
but not Required
● Content Creation.
● Access to Partner Community.
● Content Organization & Administration..
● Content Syndication/ Integration.
● Advanced Topics.
Salesforce CMS
Allotted Passing
Total Questions
Time Score
40 70 min 70 %
Exam Outline
Learning Journey
BECOME ACCREDITED
KNOW THE EXAM SHARPEN YOUR SKILLS PREP AND STUDY
PROFESSIONAL
● Explore the Exam Guide Learn at your own pace: Get ready for your exam
● Join the Official: Platform for ● Complete the Mobile Curriculum in PLC ● Review Exam Guide once more
Partners Partner Community (having 7 courses) ● Explore related resources
Chatter Group
Here are examples of the concepts you should understand to pass the exam: ● Mobile SDK Docs ● None
● Customizing Salesforce Mobile App. ● Mobile Publisher Docs
● Creating branded mobile applications using Mobile Publisher ● Mobile Developer Center
● Building Lightning Web Components for Salesforce Mobile App. ● Mobile Security Docs
● Building Native, Hybrid, HTML5 Mobile App using the Salesforce SDK. ● Mobile App
● Understand how to utilize SmartStore to provide offline capabilities. ● Mobile Ready LWCs
● Understand the Mobile Application Management Add-Ons for Security and
Compliance enhancements. And how to manage Salesforce App Usage.
Partner Learning Camp (PLC)
1
3
2
Partner Learning Camp (PLC)
4
5
6
Partner Learning Camp (PLC)
1. Login to the Partner Community and click on the Learn Tab
2. Click on Start Learning under Partner Learning Camp
3. Click on Browse Catalog from Partner Learning Camp
4. Click on the Curriculum filter (left column) and then type in cms in the search field
5. Enroll in all CMS curriculums to learn and prepare for the CMS Accredited Professional Exam
6. Click on the Home tab to get started on your learning journey
Provide Your
Valuable
Feedback
SCAN ME
bit.ly/lwr_academy_jan2022_fb
Do you have a question?
Post your question in the Q&A section.
Feedback
bit.ly/lwr_academy_jan2022_fb