我想获得一些关于架构模式的建议,以避免模块对Feature层的依赖性。
每个网站都有一些类似文章或新闻的内容页面。这些可以作为功能/文章模块或功能/新闻模块进行管理。两者都有标题,摘要和图像等常见字段。
现在我已经创建了一个Feature / FeaturedContent模块。其中我有一个带有自己模板的滑块。但内容作者想要从文章或新闻部分中选择和选择项目 只使用标题,摘要和图像。
使用@ Html.Sitecore()渲染来自不同模块的项目很简单。字段(模板......。我不会有这些字段(标题,摘要和图像,因为这些字段的ID不同在我的Feature / FeatureContent模板上的每个模块中。我不能在Feature层下引用其他模块。我不能不添加那些字段,因为那些字段不属于FeatureContent模块。这是因为Helix是不允许在Feature层下的模块之间具有依赖性。
我想就如何解决这个问题提出一些建议。 我当然希望允许内容作者重用来自不同功能模块的内容。我认为我必须把共同的领域变成基础。 任何建议都非常感谢。感谢
答案 0 :(得分:0)
首先,它不鼓励,但并非不可能在Feature层中有一些相互依赖。显然这会影响模块耦合,因此应尽可能避免。
在您的特定情况下,我认为该方法应该是创建一个公共基本功能,其中包含“接口标记模板”,其中包含您需要的3个常用字段,以及支持的Glass基类(或其他此类ORM代码)。然后,该模块将成为对文章和新闻特征的依赖。
虽然在技术上仍然是一个耦合问题,但它仍然适合我们的SOLID原则,从某种意义上说它仍然是自上而下的。将它标记为基础模块可能很诱人,但实际上并非如此,我会劝阻这种想法(如果你想要的话)。可以将其视为较大要素图层中的内部子图层