使用项目作为多个站点中的数据存储库

Bor*_*orj 0 sitecore

我有这个内容树:

SiteA
    - Home
    - Articles

SiteB
    - Home
    - News

Repository
    - article1
    - article2
    - article3
    - ...
    - article1000
Run Code Online (Sandbox Code Playgroud)

有没有办法可以从Repository项目中提取任何文章并将其动态显示在SiteA/Article项目上?我也会这样做SiteB/News

附加问题:是否可以从父项存储库继承每篇文章的布局?这些文章将通过迁移(我接下来将进行的工作)添加,一旦项目被迁移,重新分配布局将花费太多时间。

Tra*_*yek 5

就在这里。根据您的要求,您可以执行多种不同的操作。
例如,您可以MultilistField在 SiteA/Article 项目上有一个,它使您能够从 Repository 项目中选择文章。通过将 MultilistField 的数据源字段设置为 /sitecore/content/Repository,您将能够选择任何或全部。
但是,这可能不是您想要的,因为您可能有数千篇文章正在查看您的文章名称。

另一个选择是创建一个子布局/渲染,从存储库项目中读取最新的 X 篇文章。通过一个简单的 for 循环,您可以执行以下操作:

var list = new List<Item>();
var repoItem = Sitecore.Context.Database.GetItem("/sitecore/content/Repository");
for (int i = 0; i < 5; i++)
{
    list.Add(repoItem[i]);
}
Run Code Online (Sandbox Code Playgroud)

您可以将其设置为 aDataSource到 an asp:Repeater。当然,您可以通过多种不同的方式来实现(通过某些 lambda 表达式选择子项的数量,如果您还想使用关键字等,请使用 Lucene 获取项)。
您还可以在 Sitecore 中的某处定义项目数,因此 SiteB/News 和 SiteA/Article 的项目数可能不同。