Page Designer と PWA Kit の統合

Page Designer を使用すると、Progressive Web App (PWA) Kitサイト用に再利用可能なページタイプとコンポーネントタイプを作成できます。Business Manager のコード不要のビジュアルエディターを使用して、サイトの Page Designer ページをデザイン、スケジュール、公開します。PWA Kit サイトと統合すると、Page Designer は React コンポーネントを使用して動的でレスポンシブなページをレンダリングできます。

このガイドでは、サイトで Page Designer ページを表示できるように PWA Kit を構成する方法について説明します。

このチュートリアルのコマンドを実行する前に、プレースホルダーを実際の値に置き換えてください。プレースホルダーは $PLACEHOLDER の形式になっています。

前提条件 

Page Designer を 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:localhost:3000/page-viewer/$ PAGE_ID ’ に移動し、手順 2 で特定したページ ID を使用します。

    たとえば、ページ ID が 123 の場合は、http://localhost:3000/page-viewer/123に移動します。

React コンポーネントと ISML コンポーネントのマッチング 

これは、対応する ISML コンポーネントを持つ React コンポーネントのリストです。React コンポーネントは、PWA Kit の Page Designer GitHub リポジトリにあります。

React コンポーネントISML コンポーネント
カルーセルcommerce_layouts .carousel
mobileGrid1r1ccommerce_layouts .mobileGrid1r1c
mobileGrid2r1ccommerce_layouts .mobileGrid2r1c
mobileGrid2r2ccommerce_layouts .mobileGrid2r2c
mobileGrid2r3ccommerce_layouts .mobileGrid2r3c
mobileGrid3r1ccommerce_layouts .mobileGrid3r1c
mobileGrid3r2ccommerce_layouts .mobileGrid3r2c
image-tilecommerce_assets .photoTile
テキスト付き画像commerce_assets .imageAndText

その他の参照項目