Adobe 如何更改AEM 6.3';触摸屏?
我在AEM 6.1的经典UI中有一个项目,在这里我可以将默认的拖动组件或资源标签覆盖为自定义标签,就像这样:Adobe 如何更改AEM 6.3';触摸屏?,adobe,aem,Adobe,Aem,我在AEM 6.1的经典UI中有一个项目,在这里我可以将默认的拖动组件或资源标签覆盖为自定义标签,就像这样: 我已经创建了一个自定义的parsys组件。让我们把它命名为custom/parsys我用sling:resourceSuperType指向foundation/components/parsys 我分别创建了自定义/parsys/new 我通过添加以下行覆盖了new.jsp: String-emptyText=currentStyle.get(“cq:emptyText”,”); if(
String-emptyText=currentStyle.get(“cq:emptyText”,”);
if(StringUtils.isNotBlank(emptyText)){
editConfig.setEmpty(true);
editConfig.setEmptyText(emptyText);
}
更新:我用经典UI解决方案创建了一个示例项目。因此,这里我们有下面的和相应的配置。当按照AEM 6.3构建和部署时,可在以下项下进行检查并产生所需的行为:
上述方法不适用于触摸屏用户界面。Adobe在其i18n文件的“新建”部分将其硬编码为“拖动组件到此” 替代解决方案:-
- 找到一种覆盖帕西斯的方法
- 使用选择器方法,修改它与Inspectable.js的交互,在这里,您可以提供新的组件特定消息,同时包括parsys,可以通过使用选择器,例如
通过将TechNiks的建议与我以前的方法相结合,我创建了一个有效的解决方案。它还不是完美的,因为它必须假设段落资源总是在适当的位置。此外,它还创建了许多(可能是冗余的)请求调用,但从表面上看,它以我希望的方式工作,在设计中使用简单的配置,并且它证明了这是可以做到的。对于优化,需要更多的深度挖掘(我不会很快这么做,这就是为什么我已经发布了当前版本)。
以下是我采取的主要步骤:
有关详细信息,您只需查看,主要提交内容是。我今天收到了相同的功能请求,阅读您的帖子,并提供了更简单的解决方案: 1.通过自定义属性数据占位符提示,使用cq:htmlTag配置在组件中定义自定义占位符文本
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
jcr:primaryType="nt:unstructured"
data-placeholder-hint="Drag and drop your fancy components here."/>
与:
if(this.dom.hasClass(newComponentClass)){
//开始覆盖:自定义parsys文本提示
//如果通过属性数据占位符提示使用组件的配置cq:htmlTag设置,则显示自定义文本提示
var editableEl=this.dom.parents(“.cq可编辑dom[数据占位符提示],.cq可编辑dom[数据占位符提示]”)。first();
如果(EditableL.length>0){
var placeholderHint=editablel.data('placeholderHint');
var elClasses=this.dom.attr(“类”).split(“”);
对于(var i=0;i
3.如果您的组件中有多个parsys,并且您希望为每个parsys显示不同的占位符,则使用选择器包括@TechNiks答案中所述的parsys组件,但继续按照1中所述配置占位符提示,只需使用选择器作为后缀
基本上是通过数据属性数据占位符提示设置占位符消息,然后从JS读取它(如果已设置),否则显示默认消息
编辑我编辑了我的帖子,以便根据要求支持多个parsys占位符。它基本上遵循与上述选择器相同的理念,但是使用我的简单性和灵活性来配置和显示消息,而无需在覆盖文件中硬编码消息。AEM Parsys使用占位符元素上的数据文本
属性填充Parsys下拉文本
,如蓝色
中所示:
这些是默认的占位符样式(我们将使用parsys组件的附加/自定义CSS覆盖内容属性):
这是我们组件上的自定义/附加编辑器CSS:
结果是:
注意:最好使用数据路径
属性进行样式设置,而不是使用数据文本
属性:
祝你好运。。。
if (this.dom.hasClass(newComponentClass)) {
return newComponentPlaceholderText;
}
if (this.dom.hasClass(newComponentClass)) {
// START OVERLAY: custom parsys text hint
// show custom text hint if set with the component's configuration cq:htmlTag via the property data-placeholder-hint
var editableEl = this.dom.parents(".cq-Editable-dom[data-placeholder-hint],.cq-Editable-dom [data-placeholder-hint]").first();
if(editableEl.length > 0) {
var placeholderHint = editableEl.data('placeholderHint');
var elClasses = this.dom.attr("class").split(" ");
for(var i = 0; i < elClasses.length; i++) {
var placeholderHintSelector = editableEl.data("placeholder-hint-" + elClasses[i]);
if(placeholderHintSelector) {
placeholderHint = placeholderHintSelector;
break;
}
}
if(placeholderHint) {
return Granite.I18n.get(placeholderHint);
}
}
// END OVERLAY: custom parsys text hint
return newComponentPlaceholderText;
}
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
jcr:primaryType="nt:unstructured"
data-placeholder-hint="Drag and drop your fancy components here (default message)."
data-placeholder-hint-mypar1selector="Drag and drop your fancy components here (mypar1selector message)." />
div[data-path='/content/aemarch13/home/jcr:content/NavbarNav/*']:before {
content: 'Drop it here.'
}