我已经为此工作了一段时间,但我一直在撞墙。我想我已经很接近了,但我想如果不是做我想做的事情的更好方法,那么在 SO 土地上的某个人可能会有更深入的洞察力。
基本上让我们看看这个场景。我有一个带有一些文本的徽标,可以从几个不同的地方设置。如果我们看一下这里的设置,它的样子。
Hiearchy:
Homepage [has designPath]
- Child Microsite Page [has designPath]
- Logo Component
Logic Flow (in logo component):
if properties.get("logoText") {
use this
} else if currentStyle.get("logoTextFromStyle") {
use this
} else if parentStyle.get("logoTextFromGlobal") {
use this
} else {
be blank
}
我的查询是如何获取此页面的“parentStyle”。在这里查看文档: //dev.day.com/docs/en/cq/5-5/javadoc/com/day/cq/wcm/api/designer/Style.html
我已经能够想出这样一个事实,即我可以从通过 defineObjects 提供的“设计器”对象中获取 Style 对象。这是使用其他实用程序对象定义的,例如“pageManager、resourceUtil、resource、currentPage 等”。
话虽如此,这似乎不起作用。
//assuming we have getting homePage earlier and it is a valid cq Page resource
Resource homePageResource.slingRequest.getResourceResolver().getResource(homePage.getPath());
Style homePageStyle = designer.getStyle(homePageResource);
此时 homePageStyle 为空。为了进行更多测试,我尝试通过 currentPage.getPath() 而不是 homePage.getPath()。我认为这会给我 currentPage 资源并最终产生 currentStyle 对象。这也导致了一个空的 Style 对象。由此我认为我可以安全地得出结论,我传递了不正确的资源类型。
我试图将 cq:designPath 加载到资源中,希望获得 Designer resourceType 但无济于事。
我很好奇以前是否有人遇到过这个问题。如果我已经详细说明了太多细节,我深表歉意,但我也想为我的问题列出“为什么”,以防万一有更好的方法来实现这一点。