SAP Spartacus UI の CmsTicketInterceptor

Spartacus UI によって開始された OCC API リクエストの URL に、cmsTicketIdという。このフィールドの意味と目的は次のとおりです。

cmsTicketIdSpartacus UI と SAP Commerce Cloud バックエンド CMS (コンテンツ管理システム) の間のセッションを関連付ける識別子です。CMS は、ページ、コンポーネント、フロントエンド表示に関連するその他の要素などの Web サイトのコンテンツを管理するためのシステムです。SAP Commerce Cloud では、CMS は CMS Cockpit または SmartEdit ツールを通じて管理されます。Spartacus UI に表示される内容が CMS の状態と一致していることを確認するには、この 2 つをリンクするためのセッション ID が必要です。それcmsTicketIdが。

ユーザーが CMS で変更を加え、変更の結果をプレビューすると、システムは CMS セッション チケット (CMS チケット) を作成します。このチケットには、現在の CMS セッションのすべての変更が含まれていますが、まだ本番環境には公開されていません。Spartacus UI は、このチケット ID をcmsTicketIdパラメータ API リクエスト内のチケットに関連付けられた CMS データを取得します。このようにして、ユーザーは CMS で行った変更を Spartacus UI でリアルタイムにプレビューできます。

cmsTicketIdパラメータは、ユーザーが未公開の CMS 変更をプレビューできるようにするために、開発モードまたはプレビュー モードでのみ使用されます。実稼働環境では、公開された CMS コンテンツのみが表示されるため、Spartacus UI は通常、cmsTicketIdパラメーター。

SmartEdit がコンポーザブル ストア インターフェイスにページを読み込めるようにするには、必要なすべてのコンテキスト データを SmartEdit に送信する必要があります。これには、サイト、コンテンツ ディレクトリ、コンテンツ ディレクトリのバージョンが含まれ、言語、日付、時刻も指定できます。したがって、コンポーザブル ストア インターフェイスからバックエンドに送信される CMS リクエストに cmsTicketId を追加する必要があります。

コンポーザブル ストア インターフェイスには、この目的のために CmsTicketInterceptor があります。cmsTicketId が存在し、リクエストで cms が指定されている場合、インターセプターはリクエスト パラメーターの 1 つとして cmsTicketId を追加します。以下に例を示します。

https://localhost:9002/occ/v2/electronics-spa/cms/pages?lang=ja&curr=USD&cmsTicketId=647947668977012877c9ca9d-6be3-43d1-ac3a-e1f4d017a70c&pageLabelOrId=login&pageType=ContentPage

私が得た応答は次のとおりです。

取得したページ UUID を Base64 デコードします。

eyJpdGVtSWQiOiJsb2dpbiIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ==

答えが得られました:

{
    
    "itemId":"login","catalogId":"electronics-spaContentCatalog","catalogVersion":"Staged"}

cmsTicketId を使用して CMS リクエストを送信する場合、応答の JSON データにはプロパティ フィールドが含まれます。プロパティ フィールドには、含まれる CMS アイテムに適用される必須の動的プロパティのセットが含まれます。たとえば、CMS ページの属性には次のデータが含まれる場合があります。

...
"label" : "homepage",
"properties" : {
    
    
    "smartedit" : {
    
    
        "classes" : "smartedit-page-uid-homepage smartedit-page-uuid-eyJpdGVtSWQiOiJob21lcGFnZSIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ== smartedit-catalog-version-uuid-electronics-spaContentCatalog/Staged"
        }
    }
}

SmartEdit グループには、classes 属性があります。class 属性の値は、この特定の CMS ページに必要な SmartEdit コントラクトです。したがって、これらのクラスを HTML body タグのクラス リストに追加する必要があります。HTML ページのソースを見ると、body タグにこの class 属性があることがわかります。以下に例を示します。

<body class="smartedit-page-uid-homepage smartedit-page-uuid-eyJpdGVtSWQiOiJob21lcGFnZSIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ== smartedit-catalog-version-uuid-electronics-spaContentCatalog/Staged">
    <cx-storefront ng-version="8.0.0" class="stop-navigating"><header><cx-page-layout section="header" ng-reflect-section="header" class="header"><!--bindings={
...

おすすめ

転載: blog.csdn.net/i042416/article/details/131018009