如何将自定义列添加到站点管理控制台

时间:2016-07-01 04:16:30

标签: cq5 aem apache-felix

我需要在Siteadmin控制台中添加自定义列。自定义列的每一行都会有一个链接。点击该链接,它将带我到另一个页面/弹出窗口,它将显示所选页面的一些节点属性。

我指的是以下文件,但它不起作用: Adding a Custom Column to the Site Admin Console

该文件说要写一个包,但它没有说它将被调用的位置。

请分享您的想法,我该如何实现?

此致 萨蒂什南比亚

1 个答案:

答案 0 :(得分:0)

澄清信息后更新:

绕过虚荣网址导航到覆盖的siteadmin:http://localhost:4502/apps/wcm/core/content/siteadmin.html#/content/geometrixx。如果您在此处看到该列,那么虚荣网址就会出现问题。导航至http://localhost:4502/crx/de/index.jsp#/apps/wcm/core/content/siteadmin并将sling:vanityOrder值修改为310或任何大于300的值。此时,您应该会在http://localhost:4502/siteadmin看到新列。

Package Share中的演示包无法执行此操作。通过使用演示包并更新此值,我能够在AEM 5.6.1和AEM 6.2上完成这项工作。

原帖:

如果您按照链接到的文档页面上的说明Customizing the Websites Administration Console,一切都会正常运行。甚至还有一个已经为您构建的完整示例,可以从Package Share下载 - 该链接位于页面底部。

要回答您的问题,您不必致电您的代码,只要您按照说明操作并满足以下四个要点,AEM将为您处理:

  1. 您的班级实施com.day.cq.commons.ListInfoProvider
  2. 您的课程是一项服务@Service(value = ListInfoProvider.class)
  3. 您的服务有效
  4. 您实施了记录的方法
  5. 如:

    @Component(metatype = false)
    @Service(value = ListInfoProvider.class)
    public class StarredListInfoProvider implements ListInfoProvider {
        public void updateListGlobalInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
        }
    
        public void updateListItemInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
        }
    }
    

    当您的服务变为活动状态时,它将可供AEM使用。在http://localhost:4502/system/console/components

    验证Apache Felix Components控制台上的服务状态

    在AEM的核心内部是一个引用ListInfoProvider接口的服务。 AEM正在使用@Reference SCR注释绑定OSGi服务,就像您在自己的服务中一样。请参阅Apache Felix SCR Annotations @Reference文档。 AEM服务中的引用定义了多个基数,这意味着它将绑定多个服务,这意味着您可以在Siteadmin控制台中定义多个新列。

    最重要的是,AEM正在利用Apache Felix在服务可用时绑定对您的服务的引用。它知道如何做到这一点,因为您已经实现了AEM正在关注的界面。一旦您的服务处于有效状态,您就不需要打电话或运行任何东西。