问题标签 [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.

0 投票
1 回答
3183 浏览

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

请指导我我所缺少的。

0 投票
2 回答
2255 浏览

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,这似乎是最新的。

0 投票
2 回答
6074 浏览

aem - AEM 6 一目了然:如何从语言文件中读取变量?

我有以下html:

在我的 i18n 文件中,我有以下内容:

This is dummy text显示在页面中。到目前为止。问题是这foo是一个来自其他模板的变量,我读如下:

现在要阅读来自 i18n 的消息,我尝试了以下操作:

<div>${'${fooValue}' @ i18n} </div>

但这会显示${fooValue}在页面中。i18n如果我有,如何阅读来自 的消息variable key

0 投票
1 回答
21538 浏览

aem - AEM6 Sightly:如何将参数从 HTML 传递到 Java 模型类的方法?

我想将一个参数从 html 传递给 WCMUse 类。

爪哇:

HTML:

不幸的是,看起来我无法将任何参数传递给该方法。有没有办法将参数从 html 传递给 WCMUse 类?

0 投票
1 回答
11295 浏览

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'}有什么区别?

在记录的警告上下文中,“星资源”是什么意思?鉴于视觉上的文档,我仍然不太了解 @ 符号的用法。

0 投票
1 回答
2448 浏览

aem - 将变量从组件模型传递到作者对话框

我在Adob​​e AEM/CQ 站点中有一个带有 (JavaScript) UseAPI 模型的Sightly组件。

在模型中,我有一个变量,它是在组件加载时计算的,而不是存储在 JCR 中(假设它是一个随机字符串)。

当作者打开 Granite/Touch UI 对话框时,会出现一个使用 JSP 呈现的自定义 Granite UI 组件。JSP 可以访问 JCR 中组件的范围,但据我所知,它无法访问 JavaScript 模型在呈现组件时返回的属性。

如何从 Sightly/JavaScript UseAPI 传递/存储这个“随机字符串”变量,以便对话框的 JSP 可以访问它?

该变量是上下文相关的,因此我不想将其存储在永久位置,例如 JCR。一个很好的例子可能是外部 Web 服务的唯一标识符,该标识符对于该组件的特定呈现是唯一的。

0 投票
5 回答
9942 浏览

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 标签包围

0 投票
1 回答
2106 浏览

aem - 输出为上下文 html

这个想法很简单,我有一个无序列表,因为没有mod我做了以下

输出是某种奇怪的 ul 被还原。

有人可以帮我解决问题吗

0 投票
1 回答
1594 浏览

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?

0 投票
2 回答
4570 浏览

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被广泛使用。

有没有一种优雅的方法来解决这个问题?