頁面和範本 pages-and-template

[若要使用Edge Delivery Services從AEM Sites發佈,請按一下這裡。]{class="badge positive" title="從AEM到Edge Delivery Services的Publish"}

在本章中,讓我們探索基礎頁面元件與可編輯範本之間的關係。 瞭解如何根據Adobe XD的某些模型建置無樣式的文章範本。 在建置範本的過程中,將涵蓋「可編輯範本」的核心元件和進階原則設定。

先決條件 prerequisites

檢閱設定本機開發環境所需的工具和指示。

入門專案

NOTE
如果您成功完成上一章,您可以重複使用專案,並略過出庫入門專案的步驟。

檢視教學課程建置的基底程式碼:

  1. GitHub檢視tutorial/pages-templates-start分支

    code language-shell
    $ cd ~/code/aem-guides-wknd
    $ git checkout tutorial/pages-templates-start
    
  2. 使用您的Maven技能將程式碼庫部署到本機AEM執行個體:

    code language-shell
    $ mvn clean install -PautoInstallSinglePackage
    
    note note
    NOTE
    如果使用AEM 6.5或6.4,請將classic設定檔附加至任何Maven命令。
    code language-shell
    $ mvn clean install -PautoInstallSinglePackage -Pclassic
    

您一律可以在GitHub上檢視完成的程式碼,或切換至分支tutorial/pages-templates-solution在本機簽出程式碼。

目標

  1. Inspect是在Adobe XD中建立的頁面設計,並對應至核心元件。
  2. 瞭解可編輯範本的詳細資料,以及如何使用原則來強制實施頁面內容的精細控制。
  3. 瞭解範本和頁面的連結方式

您即將建置的內容 what-build

在本教學課程的這個部分,您將建立新的文章頁面範本,此範本可用來建立文章頁面,並與通用結構保持一致。 文章頁面範本以Adobe XD中的設計和產生的UI套件為基礎。 本章只著重於建置範本的結構或骨架。 未實作任何樣式,但範本和頁面運作正常。

文章頁面設計和未設定樣式的版本

使用Adobe XD進行UI規劃 adobexd

通常,規劃新網站會從模型和靜態設計開始。 Adobe XD是建立使用者體驗的設計工具。 接下來,讓我們檢查UI套件和模型,協助規劃文章頁面範本的結構。

下載WKND文章設計檔案

NOTE
一般AEM核心元件UI Kit也可以作為自訂專案的起點。

建立文章頁面範本

建立頁面時,您必須選取範本,作為建立頁面的基礎。 範本會定義結果頁面的結構、初始內容和允許的元件。

可編輯的範本有三個主要區域:

  1. 結構 — 定義屬於範本一部分的元件。 內容作者無法編輯這些內容。
  2. 初始內容 — 定義範本開始使用的元件,這些元件可由內容作者編輯和/或刪除
  3. 原則 — 定義元件行為方式及作者選項設定。

接下來,在AEM中建立符合模型結構的範本。 這會在AEM的本機執行個體中發生。 請依照下列影片中的步驟操作:

上述影片的高層級步驟:

結構設定

  1. 使用​ 頁面範本型別,名為​ 文章頁面 ​來建立範本。

  2. 切換至​ 結構 ​模式。

  3. 新增​ 體驗片段 ​元件,以做為範本頂端的​ Header

    • 設定元件以指向/content/experience-fragments/wknd/us/en/site/header/master
    • 將原則設定為​ Page Header,並確定​ 預設元素 ​已設定為headerheader元素在下一個章節中會以CSS作為目標。
  4. 新增​ 體驗片段 ​元件,以做為範本底部的​ 頁尾

    • 設定元件以指向/content/experience-fragments/wknd/us/en/site/footer/master
    • 將原則設定為​ 頁尾,並確定​ 預設元素 ​已設定為footerfooter元素在下一個章節中會以CSS作為目標。
  5. 鎖定最初建立範本時包含的​ 主要 ​容器。

    • 將原則設定為​ Page Main,並確定​ 預設元素 ​已設定為mainmain元素在下一個章節中會以CSS作為目標。
  6. 將​ Image ​元件新增至​ 主要 ​容器。

    • 解除鎖定​ Image ​元件。
  7. 在主容器的​ Image ​元件下新增​ 階層連結 ​元件。

    • 為名為​ 文章頁面 — 階層連結 ​的​ 階層連結 ​元件建立原則。 將​ 導覽開始層級 ​設定為​ 4
  8. 在​ 階層連結 ​元件下方和​ 主要 ​容器內新增​ 容器 ​元件。 這會作為範本的​ 內容容器

    • 解除鎖定​ Content ​容器。
    • 將原則設定為​ 頁面內容
  9. 在​ 內容容器 ​下方新增另一個​ 容器 ​元件。 這會作為範本的​ 側邊欄 ​容器。

    • 解除鎖定​ 側邊欄 ​容器。
    • 建立名為​ Article Page - Side Rail ​的原則。
    • 設定​ WKND Sites專案下的 ​允許的元件​ — 內容 ​以包含: 按鈕下載影像清單分隔符號社群媒體共用文字 ​和​ 標題
  10. 更新頁面根容器的原則。 這是範本最外側的容器。 將原則設定為​ 頁面根目錄

    • 在​ 容器設定 ​下,將​ 配置 ​設定為​ 回應式格線
  11. 參與​ 內容容器 ​的佈局模式。 從右到左拖曳控點,並將容器縮小為八欄寬。

  12. 參與​ 側邊欄容器 ​的佈局模式。 從右到左拖曳控點,並將容器縮小為四欄寬。 然後,從左到右拖曳左側控制代碼一欄,讓容器3欄變寬,並在​ 內容容器 ​之間留下1欄間隙。

  13. 開啟行動模擬器並切換至行動中斷點。 再次使用版面配置模式,並將​ 內容容器 ​和​ 側邊欄容器 ​設為頁面的完整寬度。 這會將容器垂直棧疊在行動中斷點中。

  14. 更新​ 內容容器 ​中​ Text ​元件的原則。

    • 將原則設定為​ 內容文字
    • 在​ 外掛程式 > 段落樣式 ​下,勾選​ 啟用段落樣式,並確定已啟用​ 引號區塊

初始內容設定

  1. 切換至​ 初始內容 ​模式。

  2. 將​ Title ​元件新增至​ Content容器。 這會當作文章標題。 當它留空時,它會自動顯示目前頁面的標題。

  3. 在第一個Title元件下方新增第二個​ Title ​元件。

    • 使用文字設定元件:「By Author」。 這是文字預留位置。
    • 將型別設定為H4
  4. 在​ By Author ​標題元件下方新增​ 文字 ​元件。

  5. 將​ Title ​元件新增至​ 側邊欄容器

    • 使用文字設定元件:「共用本文」。
    • 將型別設定為H5
  6. 在「共用此劇本」標題元件下方新增​ 社群媒體共用 ​元件。

  7. 在​ 社群媒體共用 ​元件下新增​ 分隔符號 ​元件。

  8. 在​ 分隔符號 ​元件下方新增​ 下載 ​元件。

  9. 在​ 下載 ​元件下方新增​ 清單 ​元件。

  10. 更新範本的​ 初始頁面屬性

    • 在​ 社群媒體 > 社群媒體分享 ​底下,檢查​ Facebook ​和​ Pinterest

啟用範本並新增縮圖

  1. 導覽至http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf/wknd,在範本主控台中檢視範本

  2. 啟用 ​文章頁面範本。

  3. 編輯「文章頁面」範本的屬性,並上傳下列縮圖,以快速識別使用「文章頁面」範本建立的頁面:

    文章頁面範本縮圖

使用體驗片段更新頁首和頁尾 experience-fragments

建立全域內容(例如頁首或頁尾)的常見作法是使用體驗片段。 體驗片段,可讓使用者結合多個元件,以建立單一可參考的元件。 體驗片段的優點在於支援多網站管理和本地化

AEM專案原型產生了頁首和頁尾。 接下來,更新體驗片段以符合模型。 請依照下列影片中的步驟操作:

上述影片的高層級步驟:

  1. 下載範例內容封裝​ WKND-PagesTemplates-Content-Assets.zip

  2. http://localhost:4502/crx/packmgr/index.jsp使用封裝管理員上傳及安裝內容封裝

  3. 更新Web Variation範本,這是在http://localhost:4502/editor.html/conf/wknd/settings/wcm/templates/xf-web-variation/structure.html用於體驗片段的範本

    • 更新範本上​ Container ​元件的原則。
    • 將原則設定為​ XF Root
    • 在底下,允許的元件 ​選取元件群組​ WKND Sites專案 — 結構 ​以包含​ 語言導覽導覽 ​和​ 快速搜尋 ​元件。

更新標題體驗片段

  1. 開啟在http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/header/master.html轉譯標題的體驗片段

  2. 設定片段的根​ 容器。 這是最外層的​ 容器

    • 將​ 配置 ​設定為​ 回應式格線
  3. 將​ WKND深色標誌 ​新增為影像至​ 容器 ​的頂端。 標誌包含在先前步驟中安裝的套件中。

    • 將​ WKND深色標誌 ​的版面配置修改為​ 兩個 ​欄寬。 從右到左拖曳控點。
    • 使用​ 替代文字 ​設定標誌「WKND標誌」。
    • 將標誌設定為​ 連結 ​至/content/wknd/us/en首頁。
  4. 設定已放置在頁面上的​ Navigation ​元件。

    • 將​ 排除根層級 ​設定為​ 1
    • 將​ 導覽結構深度 ​設定為​ 1
    • 將​ Navigation ​元件的配置修改為​ 8 ​欄寬。 從右到左拖曳控點。
  5. 移除​ 語言導覽 ​元件。

  6. 將​ 搜尋 ​元件的配置修改為​ 兩個 ​欄寬。 從右到左拖曳控點。 現在,所有元件應該水準對齊一列。

更新頁尾體驗片段

  1. 開啟在http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/footer/master.html呈現頁尾的體驗片段

  2. 設定片段的根​ 容器。 這是最外層的​ 容器

    • 將​ 配置 ​設定為​ 回應式格線
  3. 將​ WKND淺色標誌 ​新增為影像至​ 容器 ​的頂端。 標誌包含在先前步驟中安裝的套件中。

    • 將​ WKND Light Logo ​的版面配置修改為​ 兩個 ​欄寬。 從右到左拖曳控點。
    • 使用​ 替代文字 (WKND標誌燈)設定標誌。
    • 將標誌設定為​ 連結 ​至/content/wknd/us/en首頁。
  4. 在標誌下方新增​ Navigation ​元件。 設定​ 導覽 ​元件:

    • 將​ 排除根層級 ​設定為​ 1
    • 取消勾選​ 收集所有子頁面
    • 將​ 導覽結構深度 ​設定為​ 1
    • 將​ Navigation ​元件的配置修改為​ 8 ​欄寬。 從右到左拖曳控點。

建立文章頁面

接下來,使用「文章頁面」範本建立頁面。 編寫頁面內容以符合網站模型。 請依照下列影片中的步驟操作:

上述影片的高層級步驟:

  1. 瀏覽至http://localhost:4502/sites.html/content/wknd/us/en/magazine的Sites主控台。

  2. 在​ WKND > US > EN > 雜誌 ​下方建立頁面。

    • 選擇​ 文章頁面 ​範本。
    • 在「屬性」下,將「標題」設定為「LA滑板公園最終指南」
    • 將​ Name ​設定為"guide-la-skateparks"
  3. 將​ 由Author ​標題取代為"By Stacey Roswells"文字。

  4. 更新​ Text ​元件以包含段落以填入文章。 您可以使用下列文字檔做為復本: la-skate-parks-copy.txt

  5. 新增其他​ 文字 ​元件。

    • 更新元件以包含引述:「沒有比洛杉磯更適合清除的地方了。」
    • 以全熒幕模式編輯RTF編輯器,並修改上述引號以使用​ 引號區塊 ​元素。
  6. 繼續填入文章內文以符合模型。

  7. 設定​ Download ​元件以使用文章的PDF版本。

    • 在​ 下載 > 屬性 ​下方,按一下核取方塊以​ 從DAM資產取得標題
    • 將​ Description ​設為:「取得完整劇本」。
    • 將​ 動作文字 ​設為:「下載PDF」。
  8. 設定​ 清單 ​元件。

    • 在​ 清單設定 > 使用 ​建立清單,選取​ 子頁面
    • 將​ 父頁面 ​設定為/content/wknd/us/en/magazine
    • 在下方,專案設定 ​檢查​ 連結專案 ​並檢查​ 顯示日期

Inspect節點結構 node-structure

此時,文章頁面顯然未設定樣式。 不過,基本結構已準備就緒。 接下來,檢查文章頁面的節點結構,以更加瞭解範本、頁面和元件的角色。

在本機AEM例項上使用CRXDE-Lite工具來檢視基礎節點結構。

  1. 開啟CRXDE-Lite,並使用樹狀導覽來導覽至/content/wknd/us/en/magazine/guide-la-skateparks

  2. 按一下la-skateparks頁面下方的jcr:content節點並檢視屬性:

    JCR內容屬性

    請注意cq:template的值,它指向先前建立的文章頁面範本/conf/wknd/settings/wcm/templates/article-page

    也請注意指向wknd/components/pagesling:resourceType值。 這是由AEM專案原型建立的頁面元件,負責根據範本轉譯頁面。

  3. 展開/content/wknd/us/en/magazine/guide-la-skateparks/jcr:content底下的jcr:content節點並檢視節點階層:

    JCR Content LA滑板場

    您應該能夠鬆散地將每個節點對應至已編寫的元件。 檢視您是否能透過檢查帶有container首碼的節點來識別所使用的不同配置容器。

  4. 接著在/apps/wknd/components/page檢查頁面元件。 以CRXDE Lite檢視元件屬性:

    頁面元件屬性

    頁面元件下方只有兩個HTL指令碼: customfooterlibs.htmlcustomheaderlibs.html這個元件如何呈現頁面?

    sling:resourceSuperType屬性指向core/wcm/components/page/v2/page。 此屬性允許WKND的頁面元件繼承​ 所有 ​核心元件頁面元件的功能。 這是第一個稱為Proxy元件模式的範例。 在這裡可找到更多資訊。

  5. Inspect是WKND元件中的另一個元件,來自/apps/wknd/components/breadcrumbBreadcrumb元件。 請注意,可以找到相同的sling:resourceSuperType屬性,但這次它指向core/wcm/components/breadcrumb/v2/breadcrumb。 這是使用Proxy元件模式來包含核心元件的另一個範例。 事實上,WKND程式碼基底中的所有元件都是AEM核心元件的代理程式(自訂示範HelloWorld元件除外)。 最佳實務是在​ 之前 ​寫入自訂程式碼之前,儘可能重複使用核心元件的功能。

  6. 接下來,使用CRXDE Lite檢查位於/libs/core/wcm/components/page/v2/page的核心元件頁面:

    note note
    NOTE
    在AEM 6.5/6.4中,核心元件位於/apps/core/wcm/components下方。 在AEM as a Cloud Service中,核心元件位於/libs下並自動更新。

    核心元件頁面

    請注意,許多指令碼檔案包含在此頁面下方。 核心元件頁面包含多項功能。 此功能被分成多個指令碼,以方便維護和閱讀。 您可以透過開啟page.html並尋找data-sly-include來追蹤納入HTL指令碼:

    code language-html
    <!--/* /libs/core/wcm/components/page/v2/page/page.html */-->
    <!DOCTYPE HTML>
    <html data-sly-use.page="com.adobe.cq.wcm.core.components.models.Page" lang="${page.language}"
        data-sly-use.head="head.html"
        data-sly-use.footer="footer.html"
        data-sly-use.redirect="redirect.html">
        <head data-sly-call="${head.head @ page = page}"></head>
        <body class="${page.cssClassNames}"
            id="${page.id}"
            data-cmp-data-layer-enabled="${page.data ? true : false}">
            <script data-sly-test.dataLayerEnabled="${page.data}">
            window.adobeDataLayer = window.adobeDataLayer || [];
            adobeDataLayer.push({
                page: JSON.parse("${page.data.json @ context='scriptString'}"),
                event:'cmp:show',
                eventInfo: {
                    path: 'page.${page.id @ context="scriptString"}'
                }
            });
            </script>
            <sly data-sly-test.isRedirectPage="${page.redirectTarget && (wcmmode.edit || wcmmode.preview)}"
                data-sly-call="${redirect.redirect @ redirectTarget = page.redirectTarget}"></sly>
            <sly data-sly-test="${!isRedirectPage}">
                <sly data-sly-include="body.skiptomaincontent.html"></sly>
                <sly data-sly-include="body.socialmedia_begin.html"></sly>
                <sly data-sly-include="body.html"></sly>
                <sly data-sly-call="${footer.footer @ page = page}"></sly>
                <sly data-sly-include="body.socialmedia_end.html"></sly>
            </sly>
        </body>
    </html>
    

    將HTL分成多個指令碼的另一個原因是為了允許Proxy元件覆寫個別指令碼,以實作自訂商業邏輯。 HTL指令碼customfooterlibs.htmlcustomheaderlibs.html是為明確用途而建立的,以便透過實作專案來覆寫。

    您可以閱讀本文章🔗,深入瞭解可編輯範本如何影響內容頁面的轉譯。

  7. Inspect是另一個核心元件,例如/libs/core/wcm/components/breadcrumb/v2/breadcrumb的階層連結。 檢視breadcrumb.html指令碼,瞭解最終產生階層連結元件標籤的方式。

將設定儲存至Source控制項 configuration-persistence

通常,尤其是在開始AEM專案時,將設定(例如範本和相關內容原則)保留到原始檔控制中很有價值。 這可確保所有開發人員都針對相同的內容和設定集,且可確保環境之間有額外的一致性。 一旦專案達到一定的成熟度,管理範本的實務就可以交給特殊的超級使用者群組。

目前,範本會被視為其他程式碼片段,並將​ 文章頁面範本 ​同步處理為專案的一部分。
直到現在,程式碼才會從AEM專案推送到AEM的本機執行個體。 文章頁面範本 ​是直接在AEM的本機執行個體上建立的,所以它需要​ 匯入 ​範本至AEM專案。 ui.content ​模組包含在AEM專案中,供此特定目的使用。

在VSCode IDE中使用VSCode AEM Sync外掛程式完成後續幾個步驟。 但他們可以使用您設定為​ 匯入 ​或從AEM的本機執行個體匯入內容的任何IDE來執行。

  1. 在中,VSCode開啟aem-guides-wknd專案。

  2. 展開專案總管中的​ ui.content ​模組。 展開src資料夾並導覽至/conf/wknd/settings/wcm/templates

  3. 按一下滑鼠右鍵 templates資料夾並選取​ 從AEM伺服器匯入

    VSCode匯入範本

    應匯入article-page,也應更新page-contentxf-web-variation範本。

    已更新範本

  4. 重複步驟以匯入內容,但從/conf/wknd/settings/wcm/policies選取​ 原則 ​資料夾。

    VSCode匯入原則

  5. ui.content/src/main/content/META-INF/vault/filter.xmlInspect filter.xml檔案。

    code language-xml
    <!--ui.content filter.xml-->
    <?xml version="1.0" encoding="UTF-8"?>
    <workspaceFilter version="1.0">
        <filter root="/conf/wknd" mode="merge"/>
        <filter root="/content/wknd" mode="merge"/>
        <filter root="/content/dam/wknd" mode="merge"/>
        <filter root="/content/experience-fragments/wknd" mode="merge"/>
    </workspaceFilter>
    

    filter.xml檔案負責識別隨套件安裝的節點路徑。 請注意每個篩選器上的mode="merge",這表示現有內容不會被修改,只會新增內容。 由於內容作者可能正在更新這些路徑,因此程式碼部署​ 不會 ​覆寫內容非常重要。 請參閱FileVault檔案,以取得使用篩選元素的詳細資訊。

    比較ui.content/src/main/content/META-INF/vault/filter.xmlui.apps/src/main/content/META-INF/vault/filter.xml,瞭解每個模組所管理的不同節點。

    note warning
    WARNING
    為了確保WKND參考網站一致的部署,專案的一些分支已設定為ui.content覆寫JCR中的任何變更。 這是依設計(即針對解決方案分支)進行的,因為程式碼/樣式是為特定原則所撰寫。

恭喜! congratulations

恭喜,您已使用Adobe Experience Manager Sites建立範本和頁面。

後續步驟 next-steps

此時,文章頁面顯然未設定樣式。 遵循使用者端資料庫和前端工作流程教學課程,瞭解包含CSS和JavaScript的最佳實務,以將全域樣式套用至網站並整合專屬的前端組建。

GitHub上檢視完成的程式碼,或在Git分支tutorial/pages-templates-solution上檢閱並部署本機的程式碼。

  1. 複製github.com/adobe/aem-wknd-guides存放庫。
  2. 檢視tutorial/pages-templates-solution分支。
recommendation-more-help
b2a561c1-47c0-4182-b8c1-757a197484f9