问题标签 [sightly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
aem - 执行示例 todomvc Sightly 应用程序时出错
我正在尝试执行todomvc示例 Sightly 应用程序。创建包并将其安装在 AEM 上后,当我尝试通过导航查看 Todo 页面(由包创建)时
它显示为空白页。当我检查错误日志时,我发现了以下异常:
GET /content/todo.html HTTP/1.1] com.day.cq.wcm.core.impl.WCMDeveloperModeFilter 在包含 SlingRequestPathInfo 期间出错:path='/content/todo/jcr:content', selectorString='null', extension ='html',后缀='null'
org.apache.sling.api.SlingException:无法获取 DefaultSlingScript:没有使用提供者可以解析标识符:libs.granite.sightly.templates.ClientLibUseObject
请指导我我所缺少的。
rhino - 调试 Sling/Sightly 服务器端 JavaScript
我正在尝试通过 Sightly 模板语言的JavaScript UseAPI调试存储在 JCR 中并使用 Rhino 在服务器上运行的 JavaScript 。
根据sling.properties中提供的说明:
当我这样做时,我可以看到 Rhino 的 Swing 窗口。但是,如果我尝试在 JavaScript 文件上设置断点,或者通过添加debugger;
一行来触发调试器,调试器会中断但不会显示正确的文件。
同样,如果我从 Debug 菜单中选择“Break on function enter”,调试器将中断,但使用“Step Into/Over/Out”似乎会跳转到代码中的随机点。
这对其他人有用吗?我正在使用 org.apache.sling.scripting.javascript 的 v2.0.14,这似乎是最新的。
aem - AEM 6 一目了然:如何从语言文件中读取变量?
我有以下html:
在我的 i18n 文件中,我有以下内容:
This is dummy text
显示在页面中。到目前为止。问题是这foo
是一个来自其他模板的变量,我读如下:
现在要阅读来自 i18n 的消息,我尝试了以下操作:
<div>${'${fooValue}' @ i18n} </div>
但这会显示${fooValue}
在页面中。i18n
如果我有,如何阅读来自 的消息variable key
?
aem - AEM6 Sightly:如何将参数从 HTML 传递到 Java 模型类的方法?
我想将一个参数从 html 传递给 WCMUse 类。
爪哇:
HTML:
不幸的是,看起来我无法将任何参数传递给该方法。有没有办法将参数从 html 传递给 WCMUse 类?
aem - 如何在页面组件中包含 AEM parsys
我在页面组件文件 /apps/my-app/components/pages/homepage/body.html 中有以下行
<div data-sly-resource="${ @path='right-parsys',resourceType='wcm/foundation/components/parsys'}"></div>
我们正在收到日志消息
[.... GET /content/our-system/home/en.html HTTP/1.1] com.day.cq.wcm.msm.impl.LiveRelationshipManager Impl StarResource 在/content/our-system/home/en/ jcr:content/right-parsys/*: 没有父级: 没有 LiveCopy
我有以下问题: 段落系统是否正确添加到视觉页面组件中?它似乎工作正常。这是位于右侧列中的第二个段落放置区。我也见过这种方式data-sly-resource="${granite.resource.path @ resourceType='wcm/foundation/components/parsys'}
有什么区别?
在记录的警告上下文中,“星资源”是什么意思?鉴于视觉上的文档,我仍然不太了解 @ 符号的用法。
aem - 将变量从组件模型传递到作者对话框
我在Adobe AEM/CQ 站点中有一个带有 (JavaScript) UseAPI 模型的Sightly组件。
在模型中,我有一个变量,它是在组件加载时计算的,而不是存储在 JCR 中(假设它是一个随机字符串)。
当作者打开 Granite/Touch UI 对话框时,会出现一个使用 JSP 呈现的自定义 Granite UI 组件。JSP 可以访问 JCR 中组件的范围,但据我所知,它无法访问 JavaScript 模型在呈现组件时返回的属性。
如何从 Sightly/JavaScript UseAPI 传递/存储这个“随机字符串”变量,以便对话框的 JSP 可以访问它?
该变量是上下文相关的,因此我不想将其存储在永久位置,例如 JCR。一个很好的例子可能是外部 Web 服务的唯一标识符,该标识符对于该组件的特定呈现是唯一的。
aem - 轻轻去除装饰标签aem
如何仅在 AEM 的预览/发布模式下删除装饰标签?
我看过问答:AEM/CQ: Conditional CSS class on decoration tag
这删除了装饰,但阻止了我编辑组件,因为它也删除了编辑和设计模式下的装饰。需要什么条件才能仅删除预览/发布中的装饰标签?
我还看到可以将以下代码添加到我的 java-use 类的 activate 方法中:
这将删除除一个装饰标签之外的所有装饰标签,请参见下面的示例:
wcmmode=disabled 中的 HTML 在 activate 方法中没有上述代码:
wcmmode=disabled 中的 HTML 与 activate 方法中的上述代码:
如何删除 ul 中的第一个装饰 DIV 标记,因为当我将指定代码添加到激活方法时它不会消失?
根据此处的要求,详细查看相关组件(更新于 2015 年 7 月 5 日):
Java 类
HTML 代码: - 这涉及两个组件。首先是包含 ul 标签的容器组件 - 然后是从 Sidekick 拖放到容器中的标签组件,以在发布时创建上面显示的列表。
容器代码:
标签组件被拖放到上面的容器 parsys 中:
几个标签组件被拖放到容器中的 parsys 中,wcmmode=disabled 的结果是上面显示的第二个 ul,列表中的第一项被 div 标签包围
aem - 输出为上下文 html
这个想法很简单,我有一个无序列表,因为没有mod我做了以下
输出是某种奇怪的 ul 被还原。
有人可以帮我解决问题吗
aem - CQ5/AEM6/Sightly - 从 Java Use-Api 返回自定义类型
使用 JavaScript Use-Api 我能够创建一个自定义对象并将其返回到一个 html 文件。此功能允许我创建自定义对象列表,可用于创建菜单或其他复杂的类似列表的组件。
假设我有以下内容结构:
菜单应仅包含第一级内容页。每个菜单项都应该有带有二级内容页面的下拉列表,如果它们存在并且没有隐藏的话。我可以使用以下代码在 JavaScript 中执行此操作:
HTML:
为什么要使用 Java Use-Api?在 Resource 或 Node 等接口上操作更容易。看起来它在 JavaScript 中不能很好地工作,但我需要有可能返回具有多个属性的自定义对象。
The question is: is it even possible to do something similar using Java Use-Api? What do I have to return? I can't return a map, because it won't be possible to access its elements since it's not possible to pass a parameter to Java Use-Api method... Any suggestion?
aem - 基于 Sling 选择器在 Sightly 中显示不同的标记
上下文
我正在开发一个使用 Sightly 作为模板语言的 AEM 6 项目。我面临一个用例,我想根据 Sling 选择器的存在来显示或隐藏标记的某些部分。
例如,一个请求/content/my-project/my-page.html
应该产生一个基本的页面视图,当一个请求被发送到 时/content/my-project/my-page.ubermode.html
,Sling 应该返回由一个稍微不同的 HTML 文档表示的相同内容。
根据Sling Cheat Sheet,应该可以使用不同的脚本。
我设法通过放置两个 Sightly 脚本在组件中实现了这一点,mycomponent.html
并且ubermode.html
(以选择器命名)
当涉及到 HTML 结构时,这确实需要一些代码重复,但它工作正常。
但是,在这种特殊情况下,我需要在渲染器级别做同样的思考(我们称之为 this myapp/core/renderers/fancyPageRenderer
)。更重要的是,渲染器有一个不同的渲染器sling:resourceSuperType
(我们称之为父渲染器myapp/core/renderers/genericPageRenderer
),并且依赖于一系列中等复杂的包含(data-sly-include
)。
在fancyPageRenderer
中,我覆盖了最初定义并包含在genericPageRenderer
. 这是我希望在使用ubermode
选择器时有所不同的部分。让我们调用这个脚本mainColumn.html
我尝试了不同的命名约定来匹配选择器,但它们都没有以令人满意的方式工作。
这是最初的结构
这是我尝试过的:
这根本行不通,mainColumn.html
每次都会包括在内。
这会导致uber.html
脚本被使用,但生成的页面不包含在其他脚本中定义的任何标记genericPageRenderer
我想我可以只复制所有相关的脚本和包含的内容,fancyPageRenderer
但这会导致大量且完全不可接受的代码重复。
我也知道可以手动添加、删除或替换选择器,data-sly-resource
或者只使用原始选择器,但在我的情况下,它data-sly-include
并没有data-sly-resource
被广泛使用。
有没有一种优雅的方法来解决这个问题?