为什么我们在Hybris WCMS页面中已有ContentSlot时会有ContentSlotName?

时间:2017-11-02 06:16:31

标签: hybris

在hybris中创建页面时,我们创建了PageTemplate,然后创建了内容插槽。 每个内容槽都有与之关联的组件。内容插槽映射到PageTemplate。最后我们将PageTemplate映射到ContentPage。 这就是如何在hybris中创建Page。

由于我们已经有用于完成工作的页面模板的内容插槽,为什么我们有ContentSlotName以及我们为什么要使用它?

我们可以避免创建普通内容页面和电子邮件页面吗?

2 个答案:

答案 0 :(得分:3)

ContentSlotName用于指示cmscockpit可以在页面的特定部分中添加哪些类型的组件。例如:

INSERT_UPDATE ContentSlotName; name[unique = true]; template(uid, $contentCV)[unique = true][default = 'loginPageTemplate']; validComponentTypes(code)
; Login-LeftSection            ; ; CMSImageComponent

Login-LeftSection ”在 structure_loginPageTemplate.vm 中定义:

td colspan="6" class="structureViewSection">
  <cockpit code="Login-LeftSection"/>
</td>

当通过 位置创建关联的 ContentSlotForTemplate 时,此部分与ContentSlot(即 LoginLeftContentSlot )相关联 attribbute:

INSERT_UPDATE ContentSlotForTemplate; $contentCV[unique = true]; uid[unique = true]; position[unique = true]; pageTemplate(uid, $contentCV)[unique = true][default = 'loginPageTemplate']; contentSlot(uid, $contentCV)[unique = true]; allowOverwrite
; ; LoginLeftContent-loginPageTemplate            ; Login-LeftSection            ; ; LoginLeftContentSlot            ; true

因此,对于登录页面,cmscockpit中可以看到“ Login-LeftSection ”,如果您尝试在与该关联的插槽中添加组件部分,只有 CMSImageComponent 类型的组件可用于添加(因为上面定义的ContentSlotName实例):

enter image description here

enter image description here

因此,ContentSlotName的目的是限制可以为特定内容槽添加的组件类型。

第二个问题的答案是,我们可以避免,但这意味着可以在给定的内容广告位中添加任何类型的组件。

答案 1 :(得分:1)

实际上,ContentSlotName只是PageTemplate中可以用CmsComponents填充的部分。它可以填充为PageTemplate(如果您不想使用此PageTemplate为每个页面一次又一次地填充它)或者为页面填充(如果您想要更改每个页面的内容)。

例如:

  • 像页眉和页脚这样的ContentSlots应该在每个页面上看起来都一样。所以它们是为PageTemplate定义的。
  • ContentSlots喜欢页面的主要内容(例如条款和条件)可能因页面而异。所以它们是为Page。
  • 定义的

对于更多PageTemplates,重复使用像页眉和页脚这样的ContentSlot是常见的做法(例如,只有一个ContentSlot&#34; HeaderContent&#34;它用于所有PageTemplates)。因此,如果这些插槽的内容发生变化,它们将针对所有PageTemplates和所有页面进行更改。您只需为所有页面更改一次。

在CMSCockpit中,ContentSlotForTemplate以红色显示,因此您知道,您更改了PageTemplate,因此可能不仅仅是您正在查看的页面。