修改已发布的 magnolia 组件
Modification to published magnolia components
假设在 Magnolia 的页面应用程序中,您有几个页面包含具有 属性 对话框的组件“A”实例。这些页面发布到 Public 服务器。
- 稍后您决定更改此属性的结构(添加字段或例如将图像字段更改为图像数组)
- 为此,您需要修改组件的对话框 yaml 文件(add/modify 字段)和组件的模板 ftl 文件以呈现这些更改
问题:- 这会破坏先前创建的包含组件“A”实例的页面吗?也就是说,如果您需要修改组件的属性,最好创建新组件而不是修改现有组件?
修改现有组件没问题,只要您注意现有实例不会对新添加的实例具有任何值这一事实 properties/fields。因此,在模板中,您需要预料到您可能会得到空值,并提供良好的默认值来应对这种情况。所以从技术上讲,你可以修改组件就好了。
创建新组件还是修改现有组件更好更多地取决于业务需求。是否希望页面在已使用该组件的页面中查看新组件外观并获取新字段,或者这些更改仅与将使用该组件的新页面相关?
另一个考虑因素是您拥有的组件越多,编辑器就越难从不断增长的列表中选择合适的组件。然而,你将越多的功能塞进单个组件,它就会变得越复杂,越难测试,将来也就越难用其他东西替换它。
假设在 Magnolia 的页面应用程序中,您有几个页面包含具有 属性 对话框的组件“A”实例。这些页面发布到 Public 服务器。
- 稍后您决定更改此属性的结构(添加字段或例如将图像字段更改为图像数组)
- 为此,您需要修改组件的对话框 yaml 文件(add/modify 字段)和组件的模板 ftl 文件以呈现这些更改
问题:- 这会破坏先前创建的包含组件“A”实例的页面吗?也就是说,如果您需要修改组件的属性,最好创建新组件而不是修改现有组件?
修改现有组件没问题,只要您注意现有实例不会对新添加的实例具有任何值这一事实 properties/fields。因此,在模板中,您需要预料到您可能会得到空值,并提供良好的默认值来应对这种情况。所以从技术上讲,你可以修改组件就好了。
创建新组件还是修改现有组件更好更多地取决于业务需求。是否希望页面在已使用该组件的页面中查看新组件外观并获取新字段,或者这些更改仅与将使用该组件的新页面相关?
另一个考虑因素是您拥有的组件越多,编辑器就越难从不断增长的列表中选择合适的组件。然而,你将越多的功能塞进单个组件,它就会变得越复杂,越难测试,将来也就越难用其他东西替换它。