在hybris中创建页面时,我们创建了PageTemplate,然后创建了内容插槽。 每个内容槽都有与之关联的组件。内容插槽映射到PageTemplate。最后我们将PageTemplate映射到ContentPage。 这就是如何在hybris中创建Page。
由于我们已经有用于完成工作的页面模板的内容插槽,为什么我们有ContentSlotName以及我们为什么要使用它?
我们可以避免创建普通内容页面和电子邮件页面吗?
答案 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实例):
因此,ContentSlotName的目的是限制可以为特定内容槽添加的组件类型。
第二个问题的答案是是,我们可以避免,但这意味着可以在给定的内容广告位中添加任何类型的组件。
答案 1 :(得分:1)
实际上,ContentSlotName只是PageTemplate中可以用CmsComponents填充的部分。它可以填充为PageTemplate(如果您不想使用此PageTemplate为每个页面一次又一次地填充它)或者为页面填充(如果您想要更改每个页面的内容)。
例如:
对于更多PageTemplates,重复使用像页眉和页脚这样的ContentSlot是常见的做法(例如,只有一个ContentSlot&#34; HeaderContent&#34;它用于所有PageTemplates)。因此,如果这些插槽的内容发生变化,它们将针对所有PageTemplates和所有页面进行更改。您只需为所有页面更改一次。
在CMSCockpit中,ContentSlotForTemplate以红色显示,因此您知道,您更改了PageTemplate,因此可能不仅仅是您正在查看的页面。