嵌套在parsys问题中的可编辑模板和响应式网格

时间:2019-01-07 09:54:03

标签: aem aem-6

我认为在可编辑模板中使用响应式网格组件(布局组件)时,某些东西损坏了。如果您仅在根元素(也就是响应网格)中使用响应网格,那么一切似乎都可以正常工作。但是,如果您创建一个以普通parsys为根的可编辑模板,事情就会变糟。如果您打开基于该模板的任何页面,您将看到响应网格显示为允许的组件列表,而不是放置区域。

有意义的是,当com.day.cq.wcm.foundation.AllowedComponentList的isApplicable方法返回true时,将响应网格组件(/libs/wcm/foundation/components/responsegrid/sensitivegrid.html)设置为呈现允许的组件列表。允许在创作可编辑模板时将其呈现为允许的组件列表。

我进行了一些挖掘,并在网络上找到了该组件的来源。

 public boolean isApplicable () {  
    Page page = this.getCurrentPage();  

    // Is this resource parent an authored template structure resource  
    // And is it set as editable  
    if (page != null) {  
        Template template = page.getTemplate();  

        if (template != null && template.hasStructureSupport()) {  
            ValueMap valueMap = getResource().getValueMap();  

            if (valueMap != null &&valueMap.containsKey(TemplatedResource.PN_EDITABLE)) {  
                return valueMap.get(TemplatedResource.PN_EDITABLE, Boolean.class);  
            }  
        }  
    }  

    return false;  
}

因此,它检查这是否是基于可编辑模板的页面,这似乎合乎逻辑。我猜测下一段代码将检查可编辑模板中的资源是否具有editable={Boolean}true配置,这很有意义,因为这意味着该组件可以由作者编辑。

因此,当响应网格在页面所基于的模板中被解锁(=可编辑)时,我们将始终将响应网格呈现为页面中的允许列表组件吗?那没有道理吧?

更奇怪的是,我认为当您在响应网格中有一个响应网格时,似乎getResource().getValueMap()击中了响应网格的上方,而不是可编辑的网格,导致此检查返回false因此我们可以实际使用响应式网格。这是偶然还是我误会了?

我们正在使用AEM 6.3.2.2。还有其他人面对这个问题吗?

getResource()函数是否有问题?我们是否需要像com.day.cq.wcm.foundation.ResponsiveGrid中一样将资源转换为TemplatedResource?

0 个答案:

没有答案