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

One component is displayed twice in the page

我有一个要求,模板中应该有预定义的组件。创建页面后,应移动或删除所有这些组件。 它还包含一个 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>

'content' 部分实际上用作 @path 参数,这意味着将使用给定的 @resourceType.

包含名为 content 的资源

您可能已将此 include 放入您的组件中两次,这导致放入该 parsys 的组件显示两次。

每个 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. 一次来自直接包含它们的 data-sly-resource="${'content/sample2' @ resourceType=''}" 调用。
  2. 一次渲染 content parsys。 parsys 是一种组件类型,它会自动呈现它的所有子项。

如果您尝试在页面首次创建时设置页面上存在哪些组件,我会考虑使用 Template


旁注

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