Sitecore。从占位符中读取项目
我有一个带有占位符和列表的页面。我希望能够根据占位符中的项目用信息填充列表。例如: 我有“人”与名称和图像字段模板。我基于该模板创建了一些项目(人员A、B和C)。将这些项目作为源添加渲染后,我会在占位符中显示图像。现在,我想获取当前位于占位符中的所有项目,并将其名称字段写入列表(位于占位符之外)Sitecore。从占位符中读取项目,sitecore,sitecore8,sitecore-mvc,Sitecore,Sitecore8,Sitecore Mvc,我有一个带有占位符和列表的页面。我希望能够根据占位符中的项目用信息填充列表。例如: 我有“人”与名称和图像字段模板。我基于该模板创建了一些项目(人员A、B和C)。将这些项目作为源添加渲染后,我会在占位符中显示图像。现在,我想获取当前位于占位符中的所有项目,并将其名称字段写入列表(位于占位符之外) 目前,我只能从占位符中获取渲染项,但无法获取源项。您可以尝试以下方法: /// <summary> /// Return all renderings to be rendere
目前,我只能从占位符中获取渲染项,但无法获取源项。您可以尝试以下方法:
/// <summary>
/// Return all renderings to be rendered in a specific placeholder on the "default" device
/// </summary>
private IEnumerable<Sitecore.Data.Items.RenderingItem> GetRenderings(string placeholderKey, Sitecore.Data.Items.Item item)
{
Sitecore.Layouts.RenderingReference[] renderings = GetRenderingReferences(item, "default");
foreach (var rendering in renderings)
{
if (rendering.Placeholder == placeholderKey)
{
yield return rendering.RenderingItem;
}
}
}
//
///返回要在“默认”设备上的特定占位符中渲染的所有渲染
///
私有IEnumerable GetRendering(字符串占位符键,Sitecore.Data.Items.Item项)
{
Sitecore.Layouts.RenderingReference[]renderings=GetRenderingReferences(项“默认”);
foreach(渲染中的var渲染)
{
if(rendering.Placeholder==占位符键)
{
返回rendering.RenderingItem;
}
}
}
我能够通过在RenderingItem设置中找到的Id获取源项目:
var ph=“我的占位符”;
var renderingReferences=Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device,true);
var renderingsInPlaceholder=renderingReferences.Where(r=>r.Placeholder.EndsWith('/'+ph,StringComparison.OrdinalIgnoreCase));
var items=renderingsInPlaceholder.Select(x=>context.GetItem(ID.Parse(x.Settings.DataSource));
我认为RenderingItem
实际上不是数据源,而是呈现项的定义。每个RenderingReference
都有.Settings.DataSource
属性。如果我理解正确,这就是我们要找的。Marek是对的,RenderingItem不是数据源项。正如我在帖子中所写,我已经能够获得RenderingItem。