Integrazione di Page Designer con PWA Kit

Con Page Designer è possibile creare tipi di pagina e di componente riutilizzabili per il sito del kit Progressive Web App (PWA). Utilizzare l’editor visuale senza codice di Business Manager per progettare, programmare e pubblicare pagine di Page Designer per il sito. Se integrato con un sito PWA Kit, Page Designer consente il rendering di pagine dinamiche e reattive utilizzando i componenti React.

Questa guida spiega come configurare PWA Kit in modo che il sito possa visualizzare le pagine di Page Designer.

Prima di eseguire i comandi di questo tutorial, sostituire tutti i segnaposto con valori effettivi. I segnaposto sono formattati nel seguente modo: $PLACEHOLDER.

Prerequisiti 

Per integrare Page Designer in un sito PWA Kit:

Considerazioni 

  • Poiché PWA Kit è un’app web disaccoppiata, è necessario creare sia i componenti Page Designer Internet Store Markup Language (ISML) che i corrispondenti componenti PWA Kit React.
  • Se i componenti ISML che si desidera utilizzare sul sito non esistono in Page Designer, crearli in Business Manager. Vedere Come implementare il componente Page Designer.
  • Esistono alcuni componenti di PWA Kit React che corrispondono alle loro controparti ISML. Vedere Corrispondenza dei componenti React e ISML. Se non c’è un componente React corrispondente, puoi crearlo.
  • La funzione di anteprima in Business Manager esegue il rendering dei componenti ISML Storefront Reference Architecture (SFRA). Quindi l’aspetto effettivo del tuo sito React può essere diverso dall’anteprima. Per ottenere un’anteprima più accurata del sito PWA Kit, utilizzare Anteprima storefront.

Configurazione di Page Designer 

  1. Nel progetto PWA Kit creare un file denominato app/pages/page-viewer/index.jsx e aggiungere questo codice.

    Lo scopo del file è quello di impostare un visualizzatore di pagine per il rendering delle pagine di Page Designer utilizzando i componenti. Questo codice include componenti di esempio a scopo dimostrativo. Sostituire i componenti del codice con quelli applicabili al sito. In questo esempio di integrazione vengono utilizzati @salesforce/commerce-sdk-reactfile .

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. Nel tuo progetto PWA Kit, apri app/routes.jsx e aggiungi un percorso per navigare verso ''.

    Sostituirlo $PAGE_ID con un ID di pagina definito per le pagine di Page Designer in Business Manager.

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. Per avviare il server Web in locale, eseguire:

    npm start

  2. Per visualizzare Page Designer pagine renderizzate in React.js, passare a

    `http:localhost:3000/page-viewer/$PAGE_ID e utilizzare l’ID pagina identificato nel passaggio 2.

    Ad esempio, se l’ID pagina è 123, vai a: http://localhost:3000/page-viewer/123.

Corrispondenza di componenti React e ISML 

Questo è un elenco di componenti React che hanno controparti ISML corrispondenti. Puoi trovare i componenti React nel repository GitHub di Page Designer per PWA Kit.

Componenti React ComponentiISML
carosellocommerce_layouts. carousel
mobileGrid1r1ccommerce_layouts. mobileGrid1r1c
mobileGrid2r1ccommerce_layouts. mobileGrid2r1c
mobileGrid2r2ccommerce_layouts. mobileGrid2r2c
mobileGrid2r3ccommerce_layouts. mobileGrid2r3c
mobileGrid3r1ccommerce_layouts. mobileGrid3r1c
mobileGrid3r2ccommerce_layouts. mobileGrid3r2c
image-tilecommerce_assets. photoTile
immagine-con-testocommerce_assets. imageAndText

Vedere anche