0

我想获得一些关于架构模式的建议,以避免模块依赖于功能层。

每个站点都有某种内容页面,例如文章或新闻。这些可以作为专题/文章模块或专题/新闻模块进行管理。两者都有共同的字段,如标题、摘要和图像。

现在我创建了一个 Feature/FeaturedContent 模块。其中我有一个带有自己模板的滑块。但内容作者希望从文章或新闻部分中选择和挑选项目,其中仅使用标题、摘要和图像。

连接来自不同模块的项目很容易,但是当我使用 @Html.Sitecore().Field(Templates... 渲染它时,我将没有这些字段(标题、摘要和图像,因为这些字段的 ID 在每个模块中都不同) ) 在我的 Feature/FeatureContent 模板上。而且我不能不引用 Feature 层下的其他模块。而且我不能不添加这些字段,因为这些字段不属于 FeatureContent 模块。这是因为不允许 Helix Feature 层下的模块之间存在依赖关系。

我想就如何解决这个问题获得一些建议。我当然希望允许内容作者重用来自不同功能模块的内容。我认为我必须将公共领域移入基础。任何建议都将受到高度赞赏。谢谢

4

1 回答 1

0

首先,不鼓励,但并非不可能在 Feature 层中存在一些相互依赖。显然这会影响模块耦合,因此应尽可能避免。

在您的特定情况下,我认为该方法应该是使用“接口标记模板”创建一个通用基础功能,其中包含您需要的 3 个通用字段,以及支持的 Glass 基类(或其他此类 ORM 代码)。然后,该模块将成为文章和新闻功能的依赖项。

虽然这在技术上仍然是一个耦合问题,但它仍然非常符合我们的 SOLID 原则,并且在某种意义上它仍然是自上而下的。将其标记为 Foundation 模块可能很诱人,但实际上并非如此,因此我不鼓励这种想法(以防您要拥有它)。将其视为较大特征层中的内部子层

于 2017-05-28T10:01:06.020 回答