我擁有包含佔位符和列表的頁面。我希望能夠根據佔位符中的項目填充信息。例如:Sitecore。從佔位符中讀取項目
我有名稱和圖像字段的「人」模板。我根據該模板創建了幾件物品(人物A,B和C)。在將這些項目的渲染添加爲源後,我在佔位符中顯示圖像。現在我想獲取當前佔位符中的所有項目,並將它們的名稱字段寫入列表中(佔位符之外)。
現在我只是能夠得到渲染項目,但不是源項目,佔位符。
我擁有包含佔位符和列表的頁面。我希望能夠根據佔位符中的項目填充信息。例如:Sitecore。從佔位符中讀取項目
我有名稱和圖像字段的「人」模板。我根據該模板創建了幾件物品(人物A,B和C)。在將這些項目的渲染添加爲源後,我在佔位符中顯示圖像。現在我想獲取當前佔位符中的所有項目,並將它們的名稱字段寫入列表中(佔位符之外)。
現在我只是能夠得到渲染項目,但不是源項目,佔位符。
我能夠Id以獲取源的項目,我在RenderingItem的設置中發現:
var ph = "my_placeholder";
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)));
你可以試試波紋管方法:
/// <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;
}
}
}
我認爲'RenderingItem'其實不是一個數據源,但是渲染項目的定義。每個'RenderingReference'都有'.Settings.DataSource'屬性。如果我正確理解這個問題,這就是我們正在尋找的。 –
Marek是對的,RenderingItem不是數據源項目。正如我在我的文章中寫的,我已經能夠獲得RenderingItem。 – user3224222