頁面和範本 pages-and-template
在本章中,讓我們探索基礎頁面元件與可編輯範本之間的關係。 瞭解如何根據Adobe XD的某些模型建置無樣式的文章範本。 在建置範本的過程中,將涵蓋「可編輯範本」的核心元件和進階原則設定。
先決條件 prerequisites
檢閱設定本機開發環境所需的工具和指示。
入門專案
檢視教學課程建置的基底程式碼:
-
從GitHub檢視
tutorial/pages-templates-start
分支code language-shell $ cd ~/code/aem-guides-wknd $ git checkout tutorial/pages-templates-start
-
使用您的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
在本機簽出程式碼。
目標
- Inspect是在Adobe XD中建立的頁面設計,並對應至核心元件。
- 瞭解可編輯範本的詳細資料,以及如何使用原則來強制實施頁面內容的精細控制。
- 瞭解範本和頁面的連結方式
您即將建置的內容 what-build
在本教學課程的這個部分,您將建立新的文章頁面範本,此範本可用來建立文章頁面,並與通用結構保持一致。 文章頁面範本以Adobe XD中的設計和產生的UI套件為基礎。 本章只著重於建置範本的結構或骨架。 未實作任何樣式,但範本和頁面運作正常。
使用Adobe XD進行UI規劃 adobexd
通常,規劃新網站會從模型和靜態設計開始。 Adobe XD是建立使用者體驗的設計工具。 接下來,讓我們檢查UI套件和模型,協助規劃文章頁面範本的結構。
下載WKND文章設計檔案。
建立文章頁面範本
建立頁面時,您必須選取範本,作為建立頁面的基礎。 範本會定義結果頁面的結構、初始內容和允許的元件。
可編輯的範本有三個主要區域:
- 結構 — 定義屬於範本一部分的元件。 內容作者無法編輯這些內容。
- 初始內容 — 定義範本開始使用的元件,這些元件可由內容作者編輯和/或刪除
- 原則 — 定義元件行為方式及作者選項設定。
接下來,在AEM中建立符合模型結構的範本。 這會在AEM的本機執行個體中發生。 請依照下列影片中的步驟操作:
上述影片的高層級步驟:
結構設定
-
使用 頁面範本型別,名為 文章頁面 來建立範本。
-
切換至 結構 模式。
-
新增 體驗片段 元件,以做為範本頂端的 Header。
- 設定元件以指向
/content/experience-fragments/wknd/us/en/site/header/master
。 - 將原則設定為 Page Header,並確定 預設元素 已設定為
header
。header
元素在下一個章節中會以CSS作為目標。
- 設定元件以指向
-
新增 體驗片段 元件,以做為範本底部的 頁尾。
- 設定元件以指向
/content/experience-fragments/wknd/us/en/site/footer/master
。 - 將原則設定為 頁尾,並確定 預設元素 已設定為
footer
。footer
元素在下一個章節中會以CSS作為目標。
- 設定元件以指向
-
鎖定最初建立範本時包含的 主要 容器。
- 將原則設定為 Page Main,並確定 預設元素 已設定為
main
。main
元素在下一個章節中會以CSS作為目標。
- 將原則設定為 Page Main,並確定 預設元素 已設定為
-
將 Image 元件新增至 主要 容器。
- 解除鎖定 Image 元件。
-
在主容器的 Image 元件下新增 階層連結 元件。
- 為名為 文章頁面 — 階層連結 的 階層連結 元件建立原則。 將 導覽開始層級 設定為 4。
-
在 階層連結 元件下方和 主要 容器內新增 容器 元件。 這會作為範本的 內容容器。
- 解除鎖定 Content 容器。
- 將原則設定為 頁面內容。
-
在 內容容器 下方新增另一個 容器 元件。 這會作為範本的 側邊欄 容器。
- 解除鎖定 側邊欄 容器。
- 建立名為 Article Page - Side Rail 的原則。
- 設定 WKND Sites專案下的 允許的元件 — 內容 以包含: 按鈕、下載、影像、清單、分隔符號、社群媒體共用、文字 和 標題。
-
更新頁面根容器的原則。 這是範本最外側的容器。 將原則設定為 頁面根目錄。
- 在 容器設定 下,將 配置 設定為 回應式格線。
-
參與 內容容器 的佈局模式。 從右到左拖曳控點,並將容器縮小為八欄寬。
-
參與 側邊欄容器 的佈局模式。 從右到左拖曳控點,並將容器縮小為四欄寬。 然後,從左到右拖曳左側控制代碼一欄,讓容器3欄變寬,並在 內容容器 之間留下1欄間隙。
-
開啟行動模擬器並切換至行動中斷點。 再次使用版面配置模式,並將 內容容器 和 側邊欄容器 設為頁面的完整寬度。 這會將容器垂直棧疊在行動中斷點中。
-
更新 內容容器 中 Text 元件的原則。
- 將原則設定為 內容文字。
- 在 外掛程式 > 段落樣式 下,勾選 啟用段落樣式,並確定已啟用 引號區塊。
初始內容設定
-
切換至 初始內容 模式。
-
將 Title 元件新增至 Content容器。 這會當作文章標題。 當它留空時,它會自動顯示目前頁面的標題。
-
在第一個Title元件下方新增第二個 Title 元件。
- 使用文字設定元件:「By Author」。 這是文字預留位置。
- 將型別設定為
H4
。
-
在 By Author 標題元件下方新增 文字 元件。
-
將 Title 元件新增至 側邊欄容器。
- 使用文字設定元件:「共用本文」。
- 將型別設定為
H5
。
-
在「共用此劇本」標題元件下方新增 社群媒體共用 元件。
-
在 社群媒體共用 元件下新增 分隔符號 元件。
-
在 分隔符號 元件下方新增 下載 元件。
-
在 下載 元件下方新增 清單 元件。
-
更新範本的 初始頁面屬性。
- 在 社群媒體 > 社群媒體分享 底下,檢查 Facebook 和 Pinterest
啟用範本並新增縮圖
-
導覽至http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf/wknd,在範本主控台中檢視範本
-
啟用 文章頁面範本。
-
編輯「文章頁面」範本的屬性,並上傳下列縮圖,以快速識別使用「文章頁面」範本建立的頁面:
使用體驗片段更新頁首和頁尾 experience-fragments
建立全域內容(例如頁首或頁尾)的常見作法是使用體驗片段。 體驗片段,可讓使用者結合多個元件,以建立單一可參考的元件。 體驗片段的優點在於支援多網站管理和本地化。
AEM專案原型產生了頁首和頁尾。 接下來,更新體驗片段以符合模型。 請依照下列影片中的步驟操作:
上述影片的高層級步驟:
-
下載範例內容封裝 WKND-PagesTemplates-Content-Assets.zip。
-
在http://localhost:4502/crx/packmgr/index.jsp使用封裝管理員上傳及安裝內容封裝
-
更新Web Variation範本,這是在http://localhost:4502/editor.html/conf/wknd/settings/wcm/templates/xf-web-variation/structure.html用於體驗片段的範本
- 更新範本上 Container 元件的原則。
- 將原則設定為 XF Root。
- 在底下,允許的元件 選取元件群組 WKND Sites專案 — 結構 以包含 語言導覽、導覽 和 快速搜尋 元件。
更新標題體驗片段
-
開啟在http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/header/master.html轉譯標題的體驗片段
-
設定片段的根 容器。 這是最外層的 容器。
- 將 配置 設定為 回應式格線
-
將 WKND深色標誌 新增為影像至 容器 的頂端。 標誌包含在先前步驟中安裝的套件中。
- 將 WKND深色標誌 的版面配置修改為 兩個 欄寬。 從右到左拖曳控點。
- 使用 替代文字 設定標誌「WKND標誌」。
- 將標誌設定為 連結 至
/content/wknd/us/en
首頁。
-
設定已放置在頁面上的 Navigation 元件。
- 將 排除根層級 設定為 1。
- 將 導覽結構深度 設定為 1。
- 將 Navigation 元件的配置修改為 8 欄寬。 從右到左拖曳控點。
-
移除 語言導覽 元件。
-
將 搜尋 元件的配置修改為 兩個 欄寬。 從右到左拖曳控點。 現在,所有元件應該水準對齊一列。
更新頁尾體驗片段
-
開啟在http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/footer/master.html呈現頁尾的體驗片段
-
設定片段的根 容器。 這是最外層的 容器。
- 將 配置 設定為 回應式格線
-
將 WKND淺色標誌 新增為影像至 容器 的頂端。 標誌包含在先前步驟中安裝的套件中。
- 將 WKND Light Logo 的版面配置修改為 兩個 欄寬。 從右到左拖曳控點。
- 使用 替代文字 (WKND標誌燈)設定標誌。
- 將標誌設定為 連結 至
/content/wknd/us/en
首頁。
-
在標誌下方新增 Navigation 元件。 設定 導覽 元件:
- 將 排除根層級 設定為 1。
- 取消勾選 收集所有子頁面。
- 將 導覽結構深度 設定為 1。
- 將 Navigation 元件的配置修改為 8 欄寬。 從右到左拖曳控點。
建立文章頁面
接下來,使用「文章頁面」範本建立頁面。 編寫頁面內容以符合網站模型。 請依照下列影片中的步驟操作:
上述影片的高層級步驟:
-
瀏覽至http://localhost:4502/sites.html/content/wknd/us/en/magazine的Sites主控台。
-
在 WKND > US > EN > 雜誌 下方建立頁面。
- 選擇 文章頁面 範本。
- 在「屬性」下,將「標題」設定為「LA滑板公園最終指南」
- 將 Name 設定為"guide-la-skateparks"
-
將 由Author 標題取代為"By Stacey Roswells"文字。
-
更新 Text 元件以包含段落以填入文章。 您可以使用下列文字檔做為復本: la-skate-parks-copy.txt。
-
新增其他 文字 元件。
- 更新元件以包含引述:「沒有比洛杉磯更適合清除的地方了。」
- 以全熒幕模式編輯RTF編輯器,並修改上述引號以使用 引號區塊 元素。
-
繼續填入文章內文以符合模型。
-
設定 Download 元件以使用文章的PDF版本。
- 在 下載 > 屬性 下方,按一下核取方塊以 從DAM資產取得標題。
- 將 Description 設為:「取得完整劇本」。
- 將 動作文字 設為:「下載PDF」。
-
設定 清單 元件。
- 在 清單設定 > 使用 建立清單,選取 子頁面。
- 將 父頁面 設定為
/content/wknd/us/en/magazine
。 - 在下方,專案設定 檢查 連結專案 並檢查 顯示日期。
Inspect節點結構 node-structure
此時,文章頁面顯然未設定樣式。 不過,基本結構已準備就緒。 接下來,檢查文章頁面的節點結構,以更加瞭解範本、頁面和元件的角色。
在本機AEM例項上使用CRXDE-Lite工具來檢視基礎節點結構。
-
開啟CRXDE-Lite,並使用樹狀導覽來導覽至
/content/wknd/us/en/magazine/guide-la-skateparks
。 -
按一下
la-skateparks
頁面下方的jcr:content
節點並檢視屬性:請注意
cq:template
的值,它指向先前建立的文章頁面範本/conf/wknd/settings/wcm/templates/article-page
。也請注意指向
wknd/components/page
的sling:resourceType
值。 這是由AEM專案原型建立的頁面元件,負責根據範本轉譯頁面。 -
展開
/content/wknd/us/en/magazine/guide-la-skateparks/jcr:content
底下的jcr:content
節點並檢視節點階層:您應該能夠鬆散地將每個節點對應至已編寫的元件。 檢視您是否能透過檢查帶有
container
首碼的節點來識別所使用的不同配置容器。 -
接著在
/apps/wknd/components/page
檢查頁面元件。 以CRXDE Lite檢視元件屬性:頁面元件下方只有兩個HTL指令碼:
customfooterlibs.html
和customheaderlibs.html
。 這個元件如何呈現頁面?sling:resourceSuperType
屬性指向core/wcm/components/page/v2/page
。 此屬性允許WKND的頁面元件繼承 所有 核心元件頁面元件的功能。 這是第一個稱為Proxy元件模式的範例。 在這裡可找到更多資訊。 -
Inspect是WKND元件中的另一個元件,來自
/apps/wknd/components/breadcrumb
的Breadcrumb
元件。 請注意,可以找到相同的sling:resourceSuperType
屬性,但這次它指向core/wcm/components/breadcrumb/v2/breadcrumb
。 這是使用Proxy元件模式來包含核心元件的另一個範例。 事實上,WKND程式碼基底中的所有元件都是AEM核心元件的代理程式(自訂示範HelloWorld元件除外)。 最佳實務是在 之前 寫入自訂程式碼之前,儘可能重複使用核心元件的功能。 -
接下來,使用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.html
和customheaderlibs.html
是為明確用途而建立的,以便透過實作專案來覆寫。您可以閱讀本文章🔗,深入瞭解可編輯範本如何影響內容頁面的轉譯。
-
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來執行。
-
在中,VSCode開啟
aem-guides-wknd
專案。 -
展開專案總管中的 ui.content 模組。 展開
src
資料夾並導覽至/conf/wknd/settings/wcm/templates
。 -
按一下滑鼠右鍵
templates
資料夾並選取 從AEM伺服器匯入:應匯入
article-page
,也應更新page-content
、xf-web-variation
範本。 -
重複步驟以匯入內容,但從
/conf/wknd/settings/wcm/policies
選取 原則 資料夾。 -
從
ui.content/src/main/content/META-INF/vault/filter.xml
Inspectfilter.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.xml
與ui.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
上檢閱並部署本機的程式碼。
- 複製github.com/adobe/aem-wknd-guides存放庫。
- 檢視
tutorial/pages-templates-solution
分支。