建立自訂Cloud Service creating-a-custom-cloud-service
預設Cloud Services集可使用自訂Cloud Service型別擴展。 這可讓您以結構化的方式將自訂標籤插入頁面中。 這主要用於協力廠商分析提供者,例如Google Analytics、圖表等。 Cloud Service會從父頁面繼承至子頁面,且能夠在任何層級中斷繼承。
-
在CRXDE Lite中,在
/apps
下建立節點:- 名稱:
acs
- 類型:
nt:folder
- 名稱:
-
在
/apps/acs
下建立節點:- 名稱:
analytics
- 類型:
sling:Folder
- 名稱:
-
在
/apps/acs/analytics
下建立兩個節點:- 名稱:元件
- 類型:
sling:Folder
和
- 名稱:範本
- 類型:
sling:Folder
-
用滑鼠右鍵按一下
/apps/acs/analytics/components
。 選取 建立……,然後選取 建立元件…… 開啟的對話方塊可讓您指定:- 標籤:
googleanalyticspage
- 標題:
Google Analytics Page
- 超級型別:
cq/cloudserviceconfigs/components/configpage
- 群組:
.hidden
- 標籤:
-
按兩次「下一步 」並指定:
- 允許的父系:
acs/analytics/templates/googleanalytics
按兩下 下一步,然後按一下 確定。
- 允許的父系:
-
新增屬性至
googleanalyticspage
:- 名稱:
cq:defaultView
- 值:
html
- 名稱:
-
在
/apps/acs/analytics/components/googleanalyticspage
下建立名為content.jsp
的檔案,其內容如下:code language-xml <%@page contentType="text/html" pageEncoding="utf-8"%><% %><%@include file="/libs/foundation/global.jsp"%><div> <div> <h3>Google Analytics Settings</h3> <ul> <li><div class="li-bullet"><strong>accountID: </strong><br><%= xssAPI.encodeForHTML(properties.get("accountID", "")) %></div></li> </ul> </div>
-
在
/apps/acs/analytics/components/googleanalyticspage/
下建立節點:-
名稱:
dialog
-
類型:
cq:Dialog
-
屬性:
- 名稱:
title
- 類型:
String
- 值:
Google Analytics Config
- 名稱:
xtype
- 類型:
String
- 值:
dialog
- 名稱:
-
-
在
/apps/acs/analytics/components/googleanalyticspage/dialog
下建立節點:-
名稱:
items
-
類型:
cq:Widget
-
屬性:
- 名稱:
xtype
- 類型:
String
- 值:
tabpanel
- 名稱:
-
-
在
/apps/acs/analytics/components/googleanalyticspage/dialog/items
下建立節點:- 名稱:
items
- 類型:
cq:WidgetCollection
- 名稱:
-
在
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items
下建立節點:-
名稱: tab1
-
類型:
cq:Panel
-
屬性:
- 名稱:
title
- 類型:
String
- 值:
Config
- 名稱:
-
-
在
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items/tab1
下建立節點:-
名稱:專案
-
類型:
nt:unstructured
-
屬性:
-
名稱:
fieldLabel
-
型別:字串
-
值:帳戶識別碼
-
名稱:
fieldDescription
-
類型:
String
-
值:
The account ID assigned by Google. Usually in the form UA-NNNNNN-N
-
名稱:
name
-
類型:
String
-
值:
./accountID
-
名稱:
validateOnBlur
-
類型:
String
-
值:
true
-
名稱:
xtype
-
類型:
String
-
值:
textfield
-
-
-
將
/libs/cq/cloudserviceconfigs/components/configpage/body.jsp
複製到/apps/acs/analytics/components/googleanalyticspage/body.jsp
並在第34行將libs
變更為apps
,並將第79行的指令碼參考設為完整路徑。 -
在
/apps/acs/analytics/templates/
下建立範本:- 具有 資源型別 =
acs/analytics/components/googleanalyticspage
- 具有 標籤 =
googleanalytics
- 具有 標題=
Google Analytics Configuration
- allowedPath =
/etc/cloudservices/googleanalytics(/.*)?
- 具有 allowedChildren =
/apps/acs/analytics/templates/googleanalytics
- 具有 sling:resourceSuperType =
cq/cloudserviceconfigs/templates/configpage
(在範本節點上,而非jcr:content節點) - 使用 cq:designPath =
/etc/designs/cloudservices/googleanalytics
(在jcr:content上)
- 具有 資源型別 =
-
建立元件:
/apps/acs/analytics/components/googleanalytics
。將下列內容新增至
googleanalytics.jsp
:code language-xml <%@page import="org.apache.sling.api.resource.Resource, org.apache.sling.api.resource.ValueMap, org.apache.sling.api.resource.ResourceUtil, com.day.cq.wcm.webservicesupport.Configuration, com.day.cq.wcm.webservicesupport.ConfigurationManager" %> <%@include file="/libs/foundation/global.jsp" %><% String[] services = pageProperties.getInherited("cq:cloudserviceconfigs", new String[]{}); ConfigurationManager cfgMgr = resource.getResourceResolver().adaptTo(ConfigurationManager.class); if(cfgMgr != null) { String accountID = null; Configuration cfg = cfgMgr.getConfiguration("googleanalytics", services); if(cfg != null) { accountID = cfg.get("accountID", null); } if(accountID != null) { %> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '<%= accountID %>']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script><% } } %>
這應該會根據設定屬性輸出自訂標籤。
-
導覽至
http://localhost:4502/miscadmin#/etc/cloudservices
並建立頁面:- 標題:
Google Analytics
- 名稱:
googleanalytics
返回CRXDE Lite,並在
/etc/cloudservices/googleanalytics
底下,將下列屬性新增到jcr:content
:- 名稱:
componentReference
- 類型:
String
- 值:
acs/analytics/components/googleanalytics
- 標題:
-
導覽至新建立的服務頁面(
http://localhost:4502/etc/cloudservices/googleanalytics.html
),然後按一下 + 以建立設定:- 父設定:
/etc/cloudservices/googleanalytics
- 標題:
My First GA Config
選擇 Google Analytics組態 並按一下 建立。
- 父設定:
-
輸入 帳戶ID,例如
AA-11111111-1
。 按一下 「確定」。 -
導覽至頁面,並在 Cloud Service 標籤下方的頁面屬性中新增新建立的設定。
-
頁面中將會新增自訂標籤。