Sitecore 策划的内容与提要内容重复数据消除

Sitecore 策划的内容与提要内容重复数据消除,sitecore,deduplication,Sitecore,Deduplication,在公共网站的主页上,我们有多个模块,分为策划内容(用户手动选择文章/出版物)和提要内容(根据参数自动填充模块,通常按日期排序)。这些模块位于主页的主体部分,位于主图像和菜单的正下方。这些可以是混合顺序,而不一定是任何特定顺序 所有这些内容都存储在Sitecore中,两种模块类型由不同的模板类型分隔 有时某些文章会出现在主页上的两种模块类型中。我们希望避免这种重复数据消除。我们有一些方法可以做到这一点,但我们希望看看是否有人曾经这样做过,并决定最佳的方法。下面是我们提出的两个解决方案- 加载手动管

在公共网站的主页上,我们有多个模块,分为策划内容(用户手动选择文章/出版物)和提要内容(根据参数自动填充模块,通常按日期排序)。这些模块位于主页的主体部分,位于主图像和菜单的正下方。这些可以是混合顺序,而不一定是任何特定顺序

所有这些内容都存储在Sitecore中,两种模块类型由不同的模板类型分隔

有时某些文章会出现在主页上的两种模块类型中。我们希望避免这种重复数据消除。我们有一些方法可以做到这一点,但我们希望看看是否有人曾经这样做过,并决定最佳的方法。下面是我们提出的两个解决方案-

  • 加载手动管理的所有模块。将逗号分隔的模块ID存储到隐藏字段中。加载提要模块时,忽略隐藏字段中ID为的所有项目

  • 加载所有手动管理的内容。将ID存储到web服务器内存中的列表或数组中。加载提要模块时,忽略内存中列表或数组中ID为的所有项目

  • 我们在这里看到的唯一潜在问题是,提要和策展模块的顺序会混乱,因此我们无法在加载任何提要内容模块之前获取所有策展内容ID

    欢迎提出任何建议/想法

    感谢最简单的解决方案(假设您使用的是web表单和子布局)将扩展第二个解决方案,使具有手动选择的项目的模块在
    OnLoad
    方法中加载它们,而具有提要中的项目的模块在
    OnPreRender
    方法中加载它们。这是一个快速而肮脏的解决方案,但是如果你需要快速的胜利,它是有效的

    更好的解决方案是创建一个provider类,它是请求数据的所有模块之间的中间人,并且每个http请求都有一个此类的实例(您可以将其存储在
    HttpContext.Current.Items
    )中。所有模块都会向该提供者请求在其
    OnLoad
    方法中具有某种优先级的文章(在您的情况下,手动选择的项目的优先级将高于提要模块),并委托该方法,该方法应在从提供者返回文章时执行

    然后,在页面的
    PreRender
    方法上,您需要通知提供商所有文章请求都已注册,提供商将根据其优先级将文章返回所有已注册模块(使用一种简单的方法检查内容的唯一性),通过调用在模块的内容请求中传递的委托。这些回调应该绑定到中继器,或者以模块中需要的任何方式使用它们


    稍后,您可以轻松地在页面中注册更多模块,而无需对代码进行任何更改,并确保页面上的所有链接都是唯一的。

    这两个模块都是两个不同的子布局,并手动附加到页面项。不确定我是否可以先加载一个,因为这会打破网站其他部分的惯例。所以所有文章/出版物都来自同一个提要?然后用户手动选择其中一些作为“特色/策划”?他们如何选择它们?我假设是树状列表还是多重列表?提要和拾取模块的文章都有相同的来源。挑选的模块有手工挑选的文章。提要自动填充内容。拾取的内容来自多列表字段。