创建自定义Cloud Service creating-a-custom-cloud-service

默认Cloud Services集可以通过自定义Cloud Service类型进行扩展。 这样,您就可以采用一种结构化的方式将自定义标记注入页面中。 这主要适用于第三方分析提供商,例如Google Analytics、图表等。 Cloud Service会从父页面继承到子页面,并且能够在任何级别中断继承。

NOTE
此创建Cloud Service的分步指南是使用Google Analytics的示例。 并非所有情况都适用于您的用例。
  1. 在CRXDE Lite中,在/apps下创建一个节点:

    • 名称acs
    • 类型nt:folder
  2. /apps/acs下创建节点:

    • 名称analytics
    • 类型sling:Folder
  3. /apps/acs/analytics下创建两个节点:

    • 名称:组件
    • 类型sling:Folder

    • 名称:模板
    • 类型sling:Folder
  4. 右键单击/apps/acs/analytics/components。 选择​ 创建……,然后选择​ 创建组件…… ​打开的对话框允许您指定:

    • 标签googleanalyticspage
    • 标题Google Analytics Page
    • 超级类型cq/cloudserviceconfigs/components/configpage
    • .hidden
  5. 单击​ 下一步 ​两次,并指定:

    • 允许的父项: acs/analytics/templates/googleanalytics

    单击​ 下一步 ​两次,然后单击​ 确定

  6. googleanalyticspage添加属性:

    • 名称: cq:defaultView
    • 值: html
  7. /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>
    
  8. /apps/acs/analytics/components/googleanalyticspage/下创建节点:

    • 名称dialog

    • 类型cq:Dialog

    • 属性

      • 名称title
      • 类型String
      • Google Analytics Config
      • 名称xtype
      • 类型String
      • dialog
  9. /apps/acs/analytics/components/googleanalyticspage/dialog下创建节点:

    • 名称items

    • 类型cq:Widget

    • 属性

      • 名称xtype
      • 类型String
      • tabpanel
  10. /apps/acs/analytics/components/googleanalyticspage/dialog/items下创建节点:

    • 名称items
    • 类型cq:WidgetCollection
  11. /apps/acs/analytics/components/googleanalyticspage/dialog/items/items下创建节点:

    • 名称: tab1

    • 类型cq:Panel

    • 属性

      • 名称title
      • 类型String
      • Config
  12. /apps/acs/analytics/components/googleanalyticspage/dialog/items/items/tab1下创建节点:

    • 名称:项

    • 类型nt:unstructured

    • 属性

      • 名称fieldLabel

      • 类型:字符串

      • :帐户ID

      • 名称fieldDescription

      • 类型String

      • The account ID assigned by Google. Usually in the form UA-NNNNNN-N

      • 名称name

      • 类型String

      • ./accountID

      • 名称validateOnBlur

      • 类型String

      • true

      • 名称xtype

      • 类型String

      • textfield

  13. /libs/cq/cloudserviceconfigs/components/configpage/body.jsp复制到/apps/acs/analytics/components/googleanalyticspage/body.jsp并在第34行将libs更改为apps,并将第79行的脚本引用设置为完全限定的路径。

  14. /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上)
  15. 创建组件: /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><%
        }
    }
    %>
    

    这应该会根据配置属性输出自定义标记。

  16. 导航到http://localhost:4502/miscadmin#/etc/cloudservices并创建页面:

    • 标题Google Analytics
    • 名称googleanalytics

    返回CRXDE Lite,在/etc/cloudservices/googleanalytics下,将以下属性添加到jcr:content

    • 名称componentReference
    • 类型String
    • acs/analytics/components/googleanalytics
  17. 导航到新创建的服务页面( http://localhost:4502/etc/cloudservices/googleanalytics.html),然后单击​ + ​以创建配置:

    • 父配置/etc/cloudservices/googleanalytics
    • 标题: My First GA Config

    选择​ Google Analytics配置 ​并单击​ 创建

  18. 输入​ 帐户ID,例如AA-11111111-1。 单击​ 确定

  19. 导航到页面,并在​ 属性 ​选项卡下的页面Cloud Service中添加新创建的配置。

  20. 页面中将会添加自定义标记。

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2