動態路由和可編輯的元件

IMPORTANT
新專案中已棄用 SPA 編輯器。Adobe 仍支援現有專案使用此編輯器,但不應用於新專案。目前,AEM 中用於管理 Headless 內容的首選編輯器為:

在本章中,我們啟用兩個動態冒險詳細資訊路徑來支援可編輯的元件;Bali Surf Camp​和​波特蘭的Beervana

動態路由和可編輯的元件

冒險詳細資料SPA路由定義為/adventure/:slug,其中slug是冒險內容片段上的唯一識別碼屬性。

將SPA URL對應至AEM頁面

在前兩章中,我們將可編輯的元件內容從SPA的「首頁」檢視對應至AEM中位於/content/wknd-app/us/en/的對應遠端SPA根頁面。

為SPA動態路由的可編輯元件定義對應類似,但是我們必須在路由執行個體與AEM頁面之間採取1:1對應配置。

在本教學課程中,我們會使用WKND冒險內容片段的名稱(此為路徑的最後一個區段),並將其對應至/content/wknd-app/us/en/adventure下的簡單路徑。

遠端SPA路由
AEM頁面路徑
/
/content/wknd-app/us/en/home
/adventure/bali-surf-camp
/content/wknd-app/us/en/home/adventure/bali-surf-camp
/adventure/beervana-portland
/content/wknd-app/us/en/home/adventure/beervana-in-portland

因此,根據此對應,我們必須在以下位置建立兩個新的AEM頁面:

  • /content/wknd-app/us/en/home/adventure/bali-surf-camp
  • /content/wknd-app/us/en/home/adventure/beervana-in-portland

遠端SPA對應

離開遠端SPA之要求的對應是透過Bootstrap ​中完成的setupProxy設定所設定。

SPA編輯器對應

透過AEM SPA Editor開啟SPA時,SPA要求的對應是透過設定AEM中完成的Sling對應設定所設定。

在AEM中建立內容頁面

首先,建立中介adventure頁面區段:

  1. 登入AEM Author

  2. 導覽至​網站> WKND應用程式>我們>英文> WKND應用程式首頁

    1. 此AEM頁面對應為SPA的根,因此我們在這裡開始為其他SPA路由建置AEM頁面結構。
  3. 點選​ 建立 ​並選取​頁面

  4. 選取​ 遠端SPA頁面 ​範本,然後點選​下一步

  5. 填寫頁面屬性

    1. 標題:冒險
    2. 名稱adventure
      1. 此值會定義AEM頁面的URL,因此必須符合SPA的路由區段。
  6. 點選​完成

然後,建立與需要可編輯區域的每個SPA URL相對應的AEM頁面。

  1. 在網站管理員中導覽至新的​ Adventure ​頁面

  2. 點選​ 建立 ​並選取​頁面

  3. 選取​ 遠端SPA頁面 ​範本,然後點選​下一步

  4. 填寫頁面屬性

    1. 標題:巴厘島衝浪營
    2. 名稱bali-surf-camp
      1. 此值會定義AEM頁面的URL,因此必須符合SPA路由的最後一個區段
  5. 點選​完成

  6. 重複步驟3-6以在Portland 中建立 Beervana頁面,包含:

    1. 標題:波特蘭的Beervana
    2. 名稱beervana-in-portland
      1. 此值會定義AEM頁面的URL,因此必須符合SPA路由的最後一個區段

這兩個AEM頁面分別擁有其相符SPA路由的編寫內容。 如果其他SPA路由需要編寫,則必須在AEM中遠端SPA頁面的根頁面(/content/wknd-app/us/en/home)底下,於其SPA的URL建立新的AEM頁面。

更新WKND應用程式

讓我們將在最後一個章節中建立的<ResponsiveGrid...>元件放入AdventureDetail SPA元件中,建立可編輯的容器。

放置ResponsiveGrid SPA元件

<ResponsiveGrid...>放置在AdventureDetail元件中,會在該路由中建立可編輯的容器。 訣竅在於,因為多重路由使用AdventureDetail元件來呈現,我們必須動態調整<ResponsiveGrid...>'s pagePath屬性。 必須根據路由執行個體顯示的冒險來衍生pagePath,以指向對應的AEM頁面。

  1. 開啟並編輯react-app-/src/components/AdventureDetail.js

  2. 匯入ResponsiveGrid元件,並將其置於<h2>Itinerary</h2>元件上方。

  3. <ResponsiveGrid...>元件上設定下列屬性。 請注意,pagePath屬性會新增目前的slug,其會根據上述定義的對應對應對應至冒險頁面。

    1. pagePath = '/content/wknd-app/us/en/home/adventure/${slug}'
    2. itemPath = 'root/responsivegrid'

    這會指示ResponsiveGrid元件從AEM資源擷取其內容:

    1. /content/wknd-app/us/en/home/adventure/${slug}/jcr:content/root/responsivegrid

使用以下行更新AdventureDetail.js

...
import { ResponsiveGrid } from '@adobe/aem-react-editable-components';
...

function AdventureDetailRender(props) {
    ...
    // Get the slug from the React route parameter, this will be used to specify the AEM Page to store/read editable content from
    const { slug } = useParams();

    return(
        ...
        // Pass the slug in
        function AdventureDetailRender({ title, primaryImage, activity, adventureType, tripLength,
                groupSize, difficulty, price, description, itinerary, references, slug }) {
            ...
            return (
                ...
                <ResponsiveGrid
                    pagePath={`/content/wknd-app/us/en/home/adventure/${slug}`}
                    itemPath="root/responsivegrid"/>

                <h2>Itinerary</h2>
                ...
            )
        }
    )
}

AdventureDetail.js檔案應該如下所示:

AdventureDetail.js

在AEM中編寫容器

<ResponsiveGrid...>已就緒且其pagePath已根據轉譯的冒險動態設定後,我們會嘗試在其中製作內容。

  1. 登入AEM Author

  2. 導覽至​網站> WKND應用程式>我們> en

  3. 編輯 WKND應用程式首頁​頁面

    1. 導覽至SPA中的​ 巴厘島衝浪營 ​路線,以進行編輯
  4. 從右上角的模式選擇器中選取​預覽

  5. 點選SPA中的​ Bali Surf Camp ​卡以瀏覽其路徑

  6. 從模式選取器中選取​編輯

  7. 在​ 行程 ​的正上方找到​ 配置容器 ​可編輯區域

  8. 開啟​頁面編輯器的側列,然後選取​元件檢視

  9. 將部分已啟用的元件拖曳至​配置容器

    1. 影像
    2. 文字
    3. 標題

    並建立一些促銷行銷資料。 它看起來可能像這樣:

    Bali Adventure Detail Authoring

  10. 在AEM頁面編輯器中​ 預覽 ​您的變更

  11. 重新整理在http://localhost:3000本機執行的WKND應用程式,瀏覽至​ 巴厘島衝浪營 ​路線,以檢視所編寫的變更!

    遠端SPA巴厘島

導覽至沒有對應AEM頁面的冒險詳細路徑時,該路徑例項沒有編寫功能。 若要啟用這些頁面的撰寫功能,只要在​ 冒險 ​頁面下建立具有相符名稱的AEM頁面即可!

恭喜!

恭喜!您已新增製作功能至SPA中的動態路由!

  • 將AEM React Editable元件的ResponsiveGrid元件新增至動態路由
  • 建立AEM頁面,以支援在SPA中製作兩個特定路徑(Bali Surf Camp和Beervana in Portland)
  • 動態巴厘島衝浪營路線上的撰寫內容!

您現在已經完成,開始探索如何使用AEM SPA Editor將特定可編輯區域新增至遠端SPA的步驟!

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4