自訂AEM網站輸出 id166TG0B30WR

AEM Guides支援以下列格式建立輸出:

  • AEM網站
  • PDF
  • HTML5
  • ePub
  • 透過DITA-OT自訂輸出

對於AEM Site輸出,您可以針對不同的輸出任務指派不同的設計範本。 這些設計範本可以不同的版面配置呈現DITA內容。 例如,您可以為內部和外部對象指定不同的設計範本。

您也可以將自訂的DITA Open Toolkit (DITA-OT)外掛程式與AEM Guides搭配使用。 您可以上傳這些自訂DITA-OT外掛程式,以特定方式產生PDF輸出。

TIP
如需有關建立AEM網站輸出的最佳實務,請參閱​ 最佳實作指南 ​中的AEM網站發佈一節。

自訂設計範本以產生輸出 customize_xml-add-on

AEM Guides使用一組預先定義的設計範本來產生AEM網站輸出。 您可以自訂AEM Guides設計範本,以產生符合您公司品牌規範的輸出。 設計範本是各種樣式(CSS)、指令碼\(伺服器端和使用者端\)、資源\(影像、標誌和其他資產\)以及將所有這些資源繫結在一起的JCR節點的集合。 設計範本可以像單一伺服器端指令碼一樣簡單,只包含幾個JCR節點,或樣式、資源和JCR節點的複雜組合。 AEM Guides發佈子系統會在產生AEM Site輸出時使用設計範本,這些範本可控制所產生輸出的結構、外觀和風格。

設計範本資源在伺服器上的放置位置沒有限制,但通常會根據其功能進行邏輯組織。 例如,預設範本的所有JavaScript和CSS檔案都儲存在/etc/designs/fmdita/clientlibs/siteoutput/default資料夾下。 無論這些檔案位於何處,都會由JCR節點集合連結在一起。 這些JCR節點和檔案共同構成了整個設計範本。

AEM Guides隨附的預設設計範本可讓您自訂登入、主題和搜尋頁面元件。 您可以複製預設設計和對應的參照範本,並指定不同的元件以產生所需的輸出。

下列標籤提供指示,讓您根據您的AEM設定,指定自己的設計範本以用於產生Experience Manager Guides網站輸出: Cloud Service或內部部署。

Cloud Service
  1. 使用「封裝管理員」從下列位置下載預設設計範本:

    /libs/fmdita/config/templates

  2. 在您的Cloud Manager Git存放庫中的以下位置建立已下載檔案的復本:

    /apps/fmdita/config/templates

  3. 您也必須下載並複製從預設範本節點參照的範本。 參照的範本放置在:

    /libs/fmdita/templates/default/cqtemplates

內部部署
  1. 登入AEM並開啟CRXDE Lite模式。

  2. 導覽至預設的設計範本節點。 預設設計範本節點的位置為:

    /libs/fmdita/config/templates/

    {width="300"}

    note note
    NOTE
    將預設設計範本從libs資料夾複製到apps資料夾,並在apps資料夾中進行變更。 您也必須變更從預設範本節點參考的範本。 參照的範本放置在/libs/fmdita/templates/default/cqtemplates節點下。 在進行任何變更之前,請先在apps資料夾中複製參照的範本。
  3. 按一下​ 範本 ​節點中的​ 預設 ​元件以存取其屬性。

下表說明AEM Guides設計範本屬性。

屬性
說明
landingPageTemplatesearchPageTemplatetopicPageTemplateshadowPageTemplate
為這些對應頁面指定cq:Template節點\(登陸、搜尋和主題\)。 依預設,這些頁面的cq:Template節點可以在/libs/fmdita/templates/default/cqtemplates節點中找到。 此節點會定義登陸、搜尋和主題頁面的結構和屬性。
shadowPageTemplate用於最佳化區塊內容。 您必須將此屬性的值設定為: fmdita/templates/default/cqtemplates/shadowpage
注意:​您必須指定topicPageTemplate的值。 landingPageTemplatesearchPageTemplate為選擇性屬性。 如果您不想產生搜尋和登入頁面,請勿指定這些屬性。
title
設計範本的描述性名稱。
topicContentNode
將在主題頁面中包含DITA內容的節點位置。 路徑是相對於主題頁面的路徑。
topicHeadNode
節點的位置,此節點將包含衍生自DITA內容的head值\(或metadata\)。 路徑是相對於主題頁面的路徑。
tocNode
包含目錄的節點位置。 路徑是相對於登陸頁面或目的地路徑的。
basePathProp
用來儲存已發佈網站根目錄路徑的屬性名稱。
indexPathProp
用於儲存已發佈網站之登陸/索引頁面路徑的屬性名稱。
pdfPathProp
儲存主題PDF路徑的屬性名稱(如果已啟用主題PDF產生)。
pdfTypeProp
用於儲存PDF產生型別的屬性名稱。 目前此屬性一律包含「主題」。
searchPathProp
儲存搜尋頁面路徑的屬性名稱(如果範本包含搜尋頁面)。
siteTitleProp
用來儲存發佈之網站標題的屬性名稱。 此標題通常與正在發佈的地圖的標題相同。
sourcePathProp
用來儲存目前頁面之來源DITA主題之路徑的屬性名稱。
tocPathProp
用於儲存已發佈站台TOC根目錄路徑的屬性名稱。
NOTE
建立自訂設計範本節點後,您必須更新AEM網站輸出預設集中的「設計」選項,才能使用自訂設計範本節點。

如需詳細資訊,請參閱建立您的第一個Adobe Experience Manager網站在AEM上開發您自己的網站的基本知識

使用檔案標題來產生AEM網站輸出

產生AEM Site輸出時,產生URL的方式對發現您的內容而言至關重要。 如果您使用UUID型檔案名稱,根據檔案的UUID產生URL將不利於搜尋。 身為管理員或發佈者,您可以控制要如何產生AEM網站輸出的URL。 AEM Guides提供設定,您可選擇使用檔案標題而非UUID式檔案名稱來產生AEM Site輸出的URL。 對於以UUID為基礎的檔案系統,此選項預設為開啟。 這表示當您產生UUID型檔案系統的AEM Site輸出時,會使用檔案的標題來產生URL,而非檔案的UUID。

若為使用非UUID型檔案系統的內部部署設定,會使用檔案名稱而非檔案標題來產生AEM Site輸出。 依預設,此選項是關閉的。 這表示產生AEM Site輸出時,會使用檔案名稱來產生URL,而非檔案標題。 您可以啟用此選項,選擇根據檔案標題產生URL。

下列標籤提供根據您的Experience Manager Guides設定,在AEM網站輸出中設定URL產生的指示: Cloud Service或內部部署。

NOTE
您可以進一步設定規則,以僅允許AEM網站輸出的URL中的一組字元。 如需詳細資訊,請參閱設定檔案名稱清理規則,以建立主題並發佈AEM網站輸出
Cloud Service

使用組態覆寫中提供的指示來建立組態檔。 在設定檔案中,提供下列(property)詳細資訊,以在AEM網站輸出中設定URL產生:

table 0-row-3 1-row-3
PID 屬性索引鍵 屬性值
com.adobe.fmdita.config.ConfigManager aemsite.pagetitle 布林值(true/false)。 如果您想使用頁面標題產生輸出,則將此屬性設定為true。 預設會設定為使用檔案名稱。
預設值: false
內部部署
  1. 開啟Adobe Experience Manager Web主控台設定頁面。

    存取設定頁面的預設URL為:

    code language-http
    http://<server name>:<port>/system/console/configMgr
    
  2. 搜尋並按一下​ com.adobe.fmdita.config.ConfigManager ​套件。

  3. 選取​ 使用AEM網站頁面名稱的標題 ​選項。

    note note
    NOTE
    如果您要使用檔案名稱產生輸出,請取消選取此選項。
  4. 按一下​儲存

設定AEM網站輸出的URL以使用檔案標題(僅適用於Cloud Service)

您可以在AEM網站輸出的URL中使用檔案標題。 如果檔案名稱不存在或包含所有特殊字元,您可以設定系統在AEM Site輸出的URL中,以分隔符號取代特殊字元。 您也可以將其設定為使用第一個子主題名稱來取代。

若要設定頁面名稱,請執行下列步驟:

  1. 使用組態覆寫中提供的指示來建立組態檔。
  2. 在組態檔中,提供下列(屬性)詳細資訊,以設定主題的頁面名稱。
PID
屬性索引鍵
屬性值
com.adobe.fmdita.common.SanitizeNodeName
nodename.systemDefinedPageName
布林值(true/false)。 預設值false

例如,如果​中的@navtitle<topichead>具有所有特殊字元,而您將aemsite.pagetitle屬性設定為true,則預設會使用分隔符號。 如果您將nodename.systemDefinedPageName屬性設為true,它會顯示第一個子主題的名稱。

設定檔案名稱清理規則,以AEM Sites和其他格式建立主題和發佈輸出 id2164D0KD0XA

身為管理員,您可以定義檔案名稱中允許的有效特殊字元清單,這些字元最終會形成AEM網站輸出的URL。 在舊版中,使用者可定義包含特殊字元(如@$>等)的檔案名稱。 這些特殊字元會在產生AEM網站頁面時產生編碼的URL。

自3.8發行版本開始,已新增設定以定義檔案名稱中允許的特殊字元清單。 依預設,有效的檔案名稱組態包含"a-z A-Z 0-9 - _"。 這表示在建立檔案時,檔案標題中可以有任何特殊字元,但在內部,檔案名稱中將會以連字型大小(-)取代。 例如,您可以將檔案的標題設為Introduction 1或Introduction@1,針對這兩種情況產生的對應檔案名稱都是Introduction-1。

定義有效字元清單時,請記住,這些字元"*/:[\]|#%{}?&<>"/+"和a space將一律以連字型大小(-)取代。

NOTE
如果您未設定有效的特殊字元清單,檔案建立程式可能會為您提供一些未預期的結果。

下列標籤會提供根據您的AEM設定,在檔案名稱和Experience Manager Guides網站輸出中設定有效特殊字元的指示: Cloud Service或內部部署。

Cloud Service

使用組態覆寫中提供的指示來建立組態檔。 在設定檔案中,提供下列(property)詳細資訊,以便在檔案名稱和AEM Site輸出中設定有效的特殊字元:

table 0-row-3 1-row-3
PID 屬性索引鍵 屬性值
com.adobe.fmdita.common.SanitizeNodeNameImpl aemsite.DisallowedFileNameChars 確定屬性已設定為'<>`@$。 您可以在此清單中新增更多特殊字元。
note note
NOTE
上述設定適用於所有輸出格式。 這表示產生PDF、HTML或自訂輸出時,最終輸出將遵循設定的檔案名稱清理規則。

您也可以設定其他屬性,例如檔案名稱中的使用小寫、處理無效字元的分隔符號,以及檔案名稱中允許的最大字元數。 若要設定這些屬性,請在設定檔案中新增下列機碼值組:

table 0-row-2 1-row-2 2-row-2 3-row-2
屬性索引鍵 屬性值
nodename.uselower 布林值(true/false)。
預設值: true
nodename.separator 任何字元。
預設值: _ \(底線\)
nodename.maxlength 整數值。
預設值: 50
內部部署
  1. 開啟Adobe Experience Manager Web主控台設定頁面。

    存取設定頁面的預設URL為:

    code language-http
    http://<server name>:<port>/system/console/configMgr
    
  2. 搜尋並按一下​ com.adobe.fmdita.common.SanizeNodeNameImpl ​套件。

  3. 在​ 不允許發佈至AEM Sites ​屬性的字元集中,確定屬性已設為'<>`@$。 您可以在此清單中新增更多特殊字元,但是它必須包含這些必要的特殊字元。

    note note
    NOTE
    您也可以設定其他屬性,例如,檔案名稱中的​使用小寫、處理無效字元的​ 分隔符號 ​以及檔案名稱中允許的​字元數目上限
  4. 按一下​儲存

  5. 搜尋並按一下​ com.adobe.fmdita.config.ConfigManager ​套件。

  6. 在​ 有效字元的Regex ​屬性中,確定屬性已設為[-a-zA-Z0-9_]。 您可以新增更多字元至此清單,但清單必須包含這些基本字元,且清單必須以連字型大小(-)開頭。

    note note
    NOTE
    此屬性會定義用來建立新檔案的有效字元清單。
  7. 按一下​儲存

設定AEM網站節點結構的平面化

產生AEM Site輸出時,主題中每個元素的節點都會在內部建立。 對於包含數千個主題的DITA map,此節點結構可能會變得太深。 對於較大的網站,這種深度巢狀節點結構可能會出現效能問題。 下列快照會顯示AEM網站輸出的深度巢狀節點結構:

在上述快照中,請注意會為每個p元素及其後續子元素建立節點,並為主題中使用的其他所有元素建立類似的結構。

AEM Guides可讓您設定AEM網站輸出的節點結構在內部建立的方式。 您可以在指定元素處平面化節點結構,這表示您可以定義元素,將其視為主要元素,其內的所有子元素將與主要元素合併。 例如,如果您決定平面化p元素,則出現在p元素中的任何元素都將與主要p元素合併。 不會為p元素內的任何子元素建立個別附註。 下列快照顯示平面化於p元素的節點結構:

下列標籤會提供指示,讓您根據您的AEM設定來平面化Experience Manager Guides網站節點結構: Cloud Service或內部部署。

Cloud Service
  1. 識別您要平面化節點結構的元素:

  2. 覆蓋libs節點中的apps節點,並開啟elementmapping.xml檔案。

  3. 在您要平面化節點結構的元素定義中新增<flatten>true</flatten>屬性。 例如,如果您想要平面化p元素的節點結構,請在p元素的定義中新增flatten屬性,如下所示:

    code language-xml
    <ditaelement>
          <name>p</name>
          <class>- topic/p</class>
          <componentpath>fmdita/components/dita/wrapper</componentpath>
          <type>COMPOSITE</type>
          <target>para</target>
          <flatten>true</flatten>
          <wrapelement>div</wrapelement>
       </ditaelement>
    
    note note
    NOTE
    根據預設,flatten node屬性已在p專案上設定。
  4. 使用組態覆寫中提供的指示來建立組態檔。

  5. 在設定檔中,提供下列(property)詳細資料:

    table 0-row-3 1-row-3
    PID 屬性索引鍵 屬性值
    com.adobe.dxml.flattening.FlatteningConfigurationService flattening.enabled 布林值(true/false)。
    預設值false

現在,當您產生AEM Site輸出時,p元素內的節點會平面化並儲存在p元素本身中。 您可以在CRXDE中找到p元素的新平面化屬性。

內部部署
  1. 指定您要平面化節點結構的元素。

    1. 覆蓋libs節點中的apps節點,並開啟elementmapping.xml檔案。

    2. 在您要平面化節點結構的元素定義中新增<flatten>true</flatten>屬性。 例如,如果您想要平面化p元素的節點結構,請在p元素的定義中新增flatten屬性,如下所示:

      code language-xml
      <ditaelement>
          <name>p</name>
          <class>- topic/p</class>
          <componentpath>fmdita/components/dita/wrapper</componentpath>
          <type>COMPOSITE</type>
          <target>para</target>
          <flatten>true</flatten>
          <wrapelement>div</wrapelement>
      </ditaelement>
      
      note note
      NOTE
      根據預設,flatten node屬性已在p專案上設定。
  2. 在configMgr中啟用網站節點平面化設定。

    1. 開啟Adobe Experience Manager Web主控台設定頁面。

      存取設定頁面的預設URL為:

      code language-http
      http://<server name>:<port>/system/console/configMgr
      
    2. 搜尋並按一下​ com.adobe.dxml.flattening.FlatteningConfigurationService ​組合。

    3. 選取​ 屬性flattening.enabled ​選項。

    4. 按一下​儲存

note important
IMPORTANT
如果您在elementmapping.xml檔案中進行任何變更,請確定您開啟configMgr並儲存任何組合,以使變更生效。

現在,當您產生AEM Site輸出時,p元素內的節點會平面化並儲存在p元素本身中。 您可以在CRXDE中找到p元素的新平面化屬性。

{width="650"}

在AEM網站輸出的內容中搜尋字串(僅適用於Cloud Service)

依預設,您只能在AEM網站輸出中搜尋標題中的字串。 您可以設定系統搜尋標題中的字串,也可以搜尋AEM Site輸出的內容或內文。

NOTE
有時您的搜尋可能適用於內容中的某些元素,但您可以將其設定為適用於整個內容。

若要啟用搜尋,您應該設定AEM網站節點結構的平面化。

注意:

您最多可以搜尋1MB的平面化內容。 例如,在上一個熒幕擷圖中,您可以搜尋<p>標籤下的內容是否為<= 1Mb。

NOTE
只有在<flatten>屬性設定為true時,搜尋才會對元素生效。 依預設,AEM Guides將<p> <ul> <lI>等常用文字元素的<flatten>屬性設為true。 不過,如果您已建立某些自訂元素,則應在elementmapping.xml檔案中將<flatten>屬性設定為true。

防止AEM網站節點結構平面化

與在AEM Site輸出中指定要平面化的節點類似,您也可以指定要從此設定中排除的元素。 例如,如果您想要在body專案處平面化節點,但您不希望table中的任何body專案平面化,則您可以在table專案的定義中新增排除屬性。

若要將table元素從平面化中排除,請將下列屬性新增至table元素的定義:

<preventancestorflattening>true|false</preventancestorflattening>

在AEM網站輸出中設定已刪除頁面的版本設定

當您針對現有輸出頁面設定選取了​ 刪除和 ​建立​ ​選項來產生AEM網站輸出時,會為要刪除的頁面建立一個版本。 您可以設定系統在刪除前停止建立版本。

下列標籤會提供指示,讓您根據您的Experience Manager Guides設定,停止為正在刪除的頁面建立版本: Cloud Service或內部部署。

Cloud Service
  1. 使用組態覆寫中提供的指示來建立組態檔。

  2. 在組態檔中,提供下列(property)詳細資訊,以設定​ 不要為已刪除的頁面建立版本 ​選項:

    table 0-row-3 1-row-3
    PID 屬性索引鍵 屬性值
    com.adobe.fmdita.confi g.ConfigManager no.version.creation.on.deletion 布林值(true/false)。
    預設值true
    note note
    NOTE
    選取此選項後,使用者可直接刪除任何頁面,而不需為其建立任何版本。 如果未選取選項,則會在刪除頁面之前建立版本。
內部部署
  1. 開啟Adobe Experience Manager Web主控台設定頁面。

    存取設定頁面的預設URL為:

    code language-http
    http://<server name>:<port>/system/console/configMgr
    
  2. 搜尋並按一下​ com.adobe.fmdita.config.ConfigManager ​套件。

  3. 選取​ 不要建立已刪除頁面的版本 ​選項。

    note note
    NOTE
    選取此選項後,使用者可直接刪除任何頁面,而不需為其建立任何版本。 如果未選取選項,則會在刪除頁面之前建立版本。
  4. 按一下​儲存

使用Experience Manager Guides設定自訂重寫程式(僅適用於Cloud Service) custom-rewriter

Experience Manager Guides有自訂sling 重寫程式模組,可處理交叉對映時產生的連結(兩個不同對映之主題之間的連結)。 此重寫程式組態安裝在下列路徑:
/apps/fmdita/config/rewriter/fmdita-crossmap-link-patcher

如果您的程式碼基底中有另一個自訂Sling重寫程式,請使用大於50的'order'值,因為Experience Manager Guides Sling重寫程式使用'order' 50。 若要覆寫此值,您需要大於50的值。 如需詳細資訊,請檢視輸出重寫管道

recommendation-more-help
11125c99-e1a1-4369-b5d7-fb3098b9b178