日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP Spartacus Multi-Site Configuration

發布時間:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP Spartacus Multi-Site Configuration 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方鏈接

CMS 中定義的每個站點都有自己的上下文,其中包括基本站點 ID、語言屬性和貨幣屬性。 上下文還定義了這些屬性如何在 URL 中持久化。

Static Multi-Site Configuration

您可以通過定義上下文屬性(例如基本站點、語言和貨幣)來配置您的應用程序。 當您將這些屬性的值附加到店面 URL 時,店面將根據這些值進行配置。

例如訪問https://localhost:4200/electronics-spa/en/USD/時,應用程序加載electronics-spa基地站點,設置站點語言為英語(en),設置貨幣為美元 (美元)。

上下文屬性還為語言和貨幣下拉列表設置默認值,您可以使用它們來動態更改店面的上下文。

site 的屬性:theme,channel 和 language

content catalog:

默認顯示的產品:

配置現在放到 C:\Code\SPA\spartacus\projects\storefrontapp\src\app\spartacus\spartacus-b2c-configuration.module.ts 里了:

Context Properties

上下文屬性位于 app.module.ts 中。

baseSite、語言和貨幣屬性是將數組中的第一個元素作為默認值的數組。

urlParameters 屬性采用其他上下文屬性的值來創建附加到店面 URL 的上下文結構。

例如,如果您的店面 URL 是 https://localhost:4200,那么它會變為 https://localhost:4200/electronics-spa/en/USD/ 并具有以下上下文配置:

context: {baseSite: ['electronics-spa', //Selected by default because it is the first element in the list'electronics',],language: ['en'],currency: ['USD'],urlParameters: ['baseSite', 'language', 'currency']},...

Enabling Context in the Storefront URL

默認情況下,上下文不會出現在 Spartacus 店面 URL 中。

您可能希望在店面 URL 中顯示上下文,以此作為優化 SEO 的一種方式,或保持 URL 與以前店面的兼容性。 例如,您可能希望搜索機器人根據 URL 中的語言和貨幣對不同版本的店面進行分類。 或者,您可能正在從另一個店面遷移到 Spartacus,該店面在店面 URL 中包含上下文,并且您希望保持先前建立的頁面排名。

要在 URL 中包含上下文,請將 urlParameters 屬性添加到 app.modules.ts 中的上下文屬性。 下面是一個例子:

context: {baseSite: ['electronics-spa'],urlParameters: ['baseSite', 'language', 'currency']},

Automatic Multi-Site Configuration

此功能是在 Spartacus 庫的 1.3 版中引入的。

CMS 中定義的每個站點都有自己的上下文,其中包括基本站點 ID、語言屬性和貨幣屬性。 上下文還定義了這些屬性如何在 URL 中持久化。 您可以允許 Spartacus 根據 CMS 中定義的站點 URL 模式自動確定上下文。 您可以通過簡單地不在 app.module.ts 中定義 context.baseSite 屬性來啟用此自動上下文配置。

在應用程序初始化之前,Spartacus 從后端獲取基站點列表,將當前 URL 與 CMS 中定義的站點的 URL 模式進行比較,然后識別當前基站點及其語言, 貨幣和 URL 編碼屬性。

Mitigating the Initial Back End Call

對基本站點的后端的初始調用可能很慢,這會影響用戶體驗。 為了解決這個問題,您可以選擇使用服務器端渲染 (SSR) 或漸進式 Web 應用程序 (PWA) 技術來緩存上下文。

Caching the Site Context with Server-Side Rendering

可以在服務器端渲染期間識別站點,并且可以使用 Angular TransferState 機制將上下文傳輸到瀏覽器。 為了避免在每次頁面請求時調用服務器端的基本站點,可以使用反向代理緩存頁面。

要允許在服務器端識別站點,您需要向 Spartacus 提供當前請求 URL。 您可以通過使用 ngExpressEngine 的 Spartacus 裝飾器來完成此操作,該裝飾器在幕后提供 SERVER_REQUEST_URL 注入令牌。 您可以在 main.server.ts 中進行配置,如下所示:

import { ngExpressEngine as engine } from '@nguniversal/express-engine'; import { NgExpressEngineDecorator } from '@spartacus/core';export const ngExpressEngine = NgExpressEngineDecorator.get(engine);

Caching the Back End Response with Base Sites in PWA

使用 PWA 時,Angular Service Worker 可以緩存提供基本站點的后端響應,方法是向 Service Worker 配置中的 dataGroups 數組添加配置。 以下是來自 ngsw-config.json 的示例:

{// ..."dataGroups": [// ...{"name": "basesites","urls": ["*/rest/v2/basesites?fields=baseSites\\(uid,defaultLanguage\\(isocode\\),urlEncodingAttributes,urlPatterns,stores\\(currencies\\(isocode\\),defaultCurrency\\(isocode\\),languages\\(isocode\\),defaultLanguage\\(isocode\\)\\)*"],"cacheConfig": {"maxSize": 1,"maxAge": "1d", // Set to 1 day. Customize this value according to your needs."strategy": "performance"}}] }

Base Sites and Storefronts

當基本站點在 URL 參數中編碼時,Spartacus 引用 baseSite 參數,而 CMS 將此參數稱為 storefront. 您應該繼續在 CMS 中使用店面參數名稱,因為 Spartacus 將店面隱式映射到 baseSite。 其他參數,如語言和貨幣,不受影響。

如下圖所示:backoffice CMS 里使用參數 “storefront”:

而 Spartacus 使用 baseSite:

Writing URL Patterns in Java

由于歷史原因,在 CMS 中定義的具有 URL 模式的正則表達式是用 Java 編寫的。 但是,這些正則表達式是在前端使用 JavaScript 計算的。 您應該繼續在 CMS 中使用 Java regex,它們將在 Spartacus 中隱式轉換為 JavaScript。 例如,為了不區分大小寫,諸如 (?i) 之類的修飾符被映射到 /i。

注意:雖然 Java regex 和 JavaScript 之間的現有映射應該足以滿足最常見的情況,但并非所有 Java regex 功能都在 JavaScript 中可用,因此驗證您的 URL 模式不使用 Java regex 功能在 JavaScript 中不可用非常重要 JavaScript。 否則,任何帶有錯誤 URL 模式的基本站點都不會被 Spartacus 識別。

Disabling a Base Site

無論 CMS 中定義的選項如何,例如 active、activeFrom 或 activeTo,后端端點都會返回所有基本站點的列表,不包含有關該站點是否處于活動狀態的任何信息。 要禁用基本站點,您必須刪除該基本站點的 URL 模式。

作為替代的低級解決方法,您可以設置對后端數據庫調用的限制,以僅過濾活動站點。

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的SAP Spartacus Multi-Site Configuration的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。