一个组件在页面中显示两次

时间:2016-09-28 08:41:58

标签: cq5 aem sightly

我有一个要求,其中模板应该有预定义的组件。创建页面后,应移动或删除所有这些组件。 它还包括一个parsys。

这个我已经完成了。但我面临一个问题。 如果我在我的代码中提到

<sly data-sly-resource="${'content' @ resourceType='wcm/foundation/components/parsys'}" data-sly-unwrap="true"></sly>

我在页面中两次获得相同的组件。

如果我提及其他内容而不是内容,那就可以了。

有人可以帮助我。

我正在使用的示例代码。

<div class="sample1"><sly data-sly-resource="${'content/sample1' @ resourceType=''}" data-sly-unwrap/></div>

<div class="sample2"><sly data-sly-resource="${'content/sample2' @ resourceType=''}" data-sly-unwrap/></div>
<sly data-sly-resource="${'content' @ resourceType='wcm/foundation/components/parsys'}" data-sly-unwrap="true"></sly>

2 个答案:

答案 0 :(得分:0)

'content'部分实际上用作@path参数,这意味着将使用给定的content包含名为@resourceType的资源。

你可能在你的组件中放了两次这样的包含,导致组件放入该解析器中显示两次。

每个parsys必须拥有它自己独特的路径。

<!--first parsys-->
<sly data-sly-resource="${@path = 'content1', 
    @resourceType='wcm/foundation/components/parsys'}" data-sly-unwrap="true"></sly>

<!--second parsys-->
<sly data-sly-resource="${@path = 'content2',
    @resourceType='wcm/foundation/components/parsys'}" data-sly-unwrap="true"></sly>

答案 1 :(得分:0)

由于以下原因,组件可能会出现两次

  1. 来自data-sly-resource="${'content/sample2' @ resourceType=''}"来自直接包含他们的电话。
  2. 在渲染content解析时。 parsys是一种组件类型,可以自动呈现它的所有子项。
  3. 如果您在首次创建页面时尝试设置哪些组件,我会考虑使用Template代替。

    旁注

    • 如果您使用<sly></sly>代码,则不需要添加data-sly-unwrap。狡猾的标签自动打开。
    • 您可以将<div><sly data-sly-resource="..."></sly></div>属性直接放在div上,而不是data-sly<div class="sample2" data-sly-resource="${'content/sample2' @ resourceType=''}"></div>