將 Page Designer 與 PWA Kit 集成

使用 Page Designer,您可以為 Progressive Web App (PWA) Kit 網站創建可重用的頁面類型和元件類型。使用 Business Manager 中的無程式碼可視化編輯器為您的網站設計、計劃和發布 Page Designer 頁面。當與 PWA Kit 網站集成時,Page Designer 可以使用 React 元件呈現動態響應式頁面。

本指南介紹如何配置 PWA Kit,以便您的網站可以顯示Page Designer頁面。

在執行本教學的命令之前,請以實際值取代預留位置。預留位置的格式為:$PLACEHOLDER

先決條件 

要將Page Designer與 PWA Kit 網站整合,請執行以下作:

考量事項 

  • 由於 PWA Kit 是解耦的 Web 應用,因此需要創建 Page Designer Internet Store Markup Language (ISML) 元件及其相應的 PWA Kit React 元件
  • 如果要在網站上使用的 ISML 元件在 Page Designer 中不存在,請在 Business Manager 中創建它們。請參閱 如何實現Page Designer元件
  • 有一些 PWA Kit React 元件與它們的 ISML 對應元件相匹配。請參閱 匹配 React 和 ISML 元件。如果沒有匹配的 React 元件,你可以構建它。
  • Business Manager 中的預覽功能呈現 Storefront Reference Architecture (SFRA) ISML 元件。因此,React ��站的實際外觀可能與預覽版不同。若要更準確地預覽 PWA Kit 網站,請使用 網店預覽

配置 Page Designer 

  1. 在 PWA Kit 專案中,創建一個名為 app/pages/page-viewer/index.jsx 的檔,並添加此代碼。

    該檔的目的是設置頁面查看器以使用元件呈現Page Designer頁面。此代碼包括用於演示目的的範例元件。將代碼中的元件替換為適用於網站的元件。此範例整合使用 @salesforce/commerce-sdk-react

1// app/pages/page-viewer/index.jsx
2
3import React from 'react'
4import {useParams} from 'react-router-dom'
5import {Box} from '@salesforce/retail-react-app/app/components/shared/ui'
6import {usePage, usePages} from '@salesforce/commerce-sdk-react'
7import {Page} from '@salesforce/commerce-sdk-react/components'
8// Map Page Designer components to your React components.
9import {ImageTile, ImageWithText} from '../../page-designer/assets'
10import {
11    Carousel,
12    MobileGrid1r1c,
13    MobileGrid2r1c,
14    MobileGrid2r2c,
15    MobileGrid2r3c,
16    MobileGrid3r1c,
17    MobileGrid3r2c
18} from '../../page-designer/layouts'
19
20import {HTTPError, HTTPNotFound} from '@salesforce/pwa-kit-react-sdk/ssr/universal/errors'
21
22const PAGEDESIGNER_TO_COMPONENT = {
23    'commerce_assets.photoTile': ImageTile,
24    'commerce_assets.imageAndText': ImageWithText,
25    'commerce_layouts.carousel': Carousel,
26    'commerce_layouts.mobileGrid1r1c': MobileGrid1r1c,
27    'commerce_layouts.mobileGrid2r1c': MobileGrid2r1c,
28    'commerce_layouts.mobileGrid2r2c': MobileGrid2r2c,
29    'commerce_layouts.mobileGrid2r3c': MobileGrid2r3c,
30    'commerce_layouts.mobileGrid3r1c': MobileGrid3r1c,
31    'commerce_layouts.mobileGrid3r2c': MobileGrid3r2c
32
33// Add your custom Page Designer React component implementation here.
34
35}
36
37
38
39const PageViewer = () => {
40    const {pageId} = useParams()
41    const {data: page, error} = usePage({parameters: {pageId}})
42
43    if (error) {
44        let ErrorClass = error.response?.status === 404 ? HTTPNotFound : HTTPError
45        throw new ErrorClass(error.response?.statusText)
46    }
47
48    return (
49        <Box layerStyle={'page'}>
50            <Page page={page} components={PAGEDESIGNER_TO_COMPONENT} />
51        </Box>
52    )
53}
54
55PageViewer.displayName = 'PageViewer'
56
57export default PageViewer
  1. 在 PWA Kit 專案中,打開 app/routes.jsx 並添加導航到“”的路由

    替換 $PAGE_ID 為您在 Business Manager 中為 Page Designer 頁面定義的頁面 ID。

1// app/routes.jsx
2
3// Create a loadable page for `page-viewer`.
4const PageViewer = loadable(() => import('./pages/page-viewer'), {fallback})
5
6
7// Add a route.
8{
9    path: '/page-viewer/$PAGE_ID',
10    component: PageViewer
11}
  1. 若要在本地啟動 Web 伺服器,請執行:

    npm start

  2. 要查看以React.js呈現Page Designer頁面,請轉到

    `http:3000/page-viewer/$PAGE_ID',並使用您在步驟 2 中標識的頁面 ID。

    例如,如果您的頁面ID是123,請轉至: http://localhost:3000/page-viewer/123

匹配 React 和 ISML 元件 

這是具有匹配的 ISML 對應項的 React 元件清單。可以在 Page Designer GitHub Repo for PWA Kit 中找到 React 元件。

React 元件ISML 元件
輪播commerce_layouts. carousel
移動網格 1r1ccommerce_layouts. mobileGrid1r1c
移動網格2r1ccommerce_layouts. mobileGrid2r1c
mobileGrid2r2ccommerce_layouts. mobileGrid2r2c
移動網格2r3ccommerce_layouts. mobileGrid2r3c
移動網格3r1ccommerce_layouts. mobileGrid3r1c
移動網格3r2ccommerce_layouts. mobileGrid3r2c
圖像-tilecommerce_assets. photoTile
圖像與文本commerce_assets. imageAndText

也請參閱