2016-07-27 10 views
3

Ich habe die Seite mit Platzhalter und Liste. Ich möchte in der Lage sein, die Liste mit Informationen zu füllen, die von den Elementen im Platzhalter abhängen. Zum Beispiel:Sitecore. Artikel von Platzhalter lesen

Ich habe "Person" Vorlage mit Namen und Bildfelder. Ich erstelle nur wenige Elemente basierend auf dieser Vorlage (Person A, B und C). Nachdem ich die Renderings mit diesen Elementen als Quelle hinzugefügt habe, zeige ich Bilder im Platzhalter an. Jetzt möchte ich alle Artikel, die derzeit im Platzhalter sind, und schreibe ihr Name-Feld in die Liste (die außerhalb Platzhalter ist).

Für jetzt konnte ich nur das Rendering-Element, aber nicht Quellelement, aus Platzhalter.

Antwort

1

Ich konnte Quellelemente von Id bekommen, dass ich in den Einstellungen von RenderingItem gefunden:

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))); 
1

können Sie versuchen, dir die Methode:

/// <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; 
     } 
     } 
    } 
+3

Ich denke, dass 'RenderingItem' in der Tat nicht eine Datenquelle, aber die Definition des Rendering-Elements. Jede RenderingReference hat die Eigenschaft ".Settings.DataSource". Und wenn ich die Frage richtig verstanden habe, suchen wir genau danach. –

+0

Marek hat recht, RenderingItem ist kein Datenquellenelement. Und wie ich in meinem Post schrieb, konnte ich bereits RenderingItem bekommen. – user3224222

Verwandte Themen