我在AEM6中使用新的语言来使用模板渲染我的组件,在我的组件中有一个视频,它使用JWPlayer插件,需要以下代码来启动视频:
<div id='playerpwSIOjcRZrCa'></div>
<script type='text/javascript'>
jwplayer('playerpwSIOjcRZrCa').setup({
file: '//www.youtube.com/watch?v=123456',
title: 'Video title',
width: '100%',
aspectratio: '16:9'
});
</script>
Run Code Online (Sandbox Code Playgroud)
但我想让Youtube变量动态化,以便用户可以更改作者中的id,所以在videoPath(youtube id)中传递了以下模板:
<template data-sly-template.player="${@ videoPath}">
Video Id: ${videoPath}
<script src="//jwpsrv.com/library/HjcD1BZoEeS7ByIAC0MJiQ.js"></script>
<div id='playerpwSIOjcRZrCa'></div>
<script type='text/javascript'>
jwplayer('playerpwSIOjcRZrCa').setup({
file: '//www.youtube.com/watch?v=' ${videoPath},
title: 'Video title',
width: '100%',
aspectratio: '16:9'
});
</script>
</template>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是标签中的$ {videoPath}没有呈现id作为模板顶部的id.
有没有办法使用明亮的模板解决这个问题?
我们有吊带模型.例如
@Model(adaptables=Resource.class)
public class MyModel {
@Inject
private String propertyName;
}
public Image getPropertyName) {
return propertyName;
}
Run Code Online (Sandbox Code Playgroud)
我们还添加了
<Sling-Model-Packages>
org.apache.sling.models.it.models
</Sling-Model-Packages>
Run Code Online (Sandbox Code Playgroud)
在此之后,我们可以打开该组件的编辑对话框并检查是否插入了一些数据.我们可以在JCR中看到这些数据但是当我们试图通过Sightly获取propertyName的内容时
<div class="feature-wrapper" data-sly-use.model="org.apache.sling.models.it.models.MyModel">
<div data-sly-test="${model.propertyName}" data-sly-unwrap>
Run Code Online (Sandbox Code Playgroud)
model.propertyName将为空
任何想法或建议?我如何调试Sling?
任何人都可以在这篇文章中添加标签"Sightly"吗?
我有以下html:
<div >${'foo' @ i18n}</div>
Run Code Online (Sandbox Code Playgroud)
在我的i18n文件中,我有以下内容:
<foo
jcr:mixinTypes="[sling:Message]"
jcr:primaryType="sling:MessageEntry"
sling:key="foo"
sling:message="This is dummy text"/>
Run Code Online (Sandbox Code Playgroud)
This is dummy text显示在页面中.到目前为止.问题是这foo是一个来自其他模板的变量,我读如下:
${fooValue} //this returns foo
Run Code Online (Sandbox Code Playgroud)
现在从i18n读取消息我尝试了以下内容:
<div>${'${fooValue}' @ i18n} </div>
但是这会显示${fooValue}在页面中.i18n如果有的话,如何阅读消息variable key?
我正在使用最新的AEM6(以前的CQ)开发一个新站点.最初,您可以将图像/视频拖动到使用JSP的组件dropTarget中设置的组件放置区域.
但是,由于Sightly templating现在是构建组件而不是JSP的首选方法,因此仍然可以在Sighlty模板中使用dropTarget吗?
有一种Page接口的方法可以用来轻松迭代子进程.
我想以递归方式迭代所有后续的子节点.
有一个重载方法listChildren(Filter,Boolean)可以做到这一点......如何从这个方法调用这个方法?我的意思是如何修改上面提到的标签以递归方式进行.
我有一个触摸UI组件,我正在AEM 6中创建一个对话框.我需要在触摸对话框中创建2个单选按钮,如果其中任何一个被选中,则所选单选按钮的相应值应为显示.但是,我不了解如何创建单选按钮选项.我在经典对话框中实现了相同的选项,其中使用了xtype = selection和type = radiogroup,但我不明白如何在触摸对话框中创建它
在Sightly模板语言中,对于Adobe AEM6,如果条件为真,如何使用特定类?
$ {properties.reduceImage}是我的复选框,因此如果选中该复选框,则添加该类,否则它不会返回任何内容.我不确定我这样做是否正确.
<div data-sly-test="${properties.reduceImage}" data-sly-unwrap>
<div class="reduce-image">
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用现有页面(使用TouchUI的路径浏览器选择)作为我的HTL页面上的弹出/模态.是否有一种方法可以使用不同的文件添加/注入HTML?它更关于在页面上播放html而不是如何构建对话窗口.
我有将 html 作为字符串值返回的方法。我认为在显示时它会在浏览器上以粗体显示字符串,但它向我显示的字符串与浏览器上的一样。
public String getHtml() {
return "<b>kunal</b>";
}
<sly data-sly-use.item="demo.html.DemoHtml">
${item.html}
</sly>
Run Code Online (Sandbox Code Playgroud)
输出:
<b>kunal</b>
Run Code Online (Sandbox Code Playgroud)
有什么解决方法吗?
我已经看到,从 AEM 6.3 开始,标记本身就支持日期格式,如下所示:
${ 'dd~MMMM-yyyy' @ format=currentPage.jcr:created }
Run Code Online (Sandbox Code Playgroud)
(参考:https : //github.com/adobe/htl-spec/blob/master/SPECIFICATION.md#1222-dates)
我尝试使用该 jcr:created 属性以及来自后端的数据来玩这个格式化程序java.util.Date。
我的问题是,是否支持其他日期类型?比如说,java.time.LocalDate?它没有显示在我的测试页面上,虽然我不确定我是否只是缺少一些需要在 HTL 标记上指出的附加属性?