Sitecores: Wie gleiche Feldnamen in verschiedenen Abschnitten zugreifen

StackOverflow https://stackoverflow.com/questions/785265

  •  16-09-2019
  •  | 
  •  

Frage

I Datenvorlage DT1 in Sitecore, die das Feld „Header“ im Abschnitt „Daten“ hat. Ich habe Datenvorlage dt2 auch, dass das Feld „Header“ im Abschnitt „Portal“ hat Schließlich habe ich Datenvorlage DT3, die sowohl DT1 und DT2 als Basis-Vorlagen verwendet.

Wie kann ich, in xslt, finden Sie den Inhalt des Portals / header?

In meinem Code, wenn ich schreibe , erhalte ich den Inhalt von Daten / Header (da dieser Knoten zuerst eintritt). Ich weiß, wie dies in .net zu tun, aber ich brauche Xslt zu verwenden.

/ callprat

War es hilfreich?

Lösung

Sie können es nicht.

Und ehrlich gesagt weiß ich nicht von jedem unterstützten so, wie es von .NET entweder zu tun.

Dies, gerade aus der Data Definition Referenz , Abschnitt 2.1 0,1

  

2.1.1 Datenvorlage Felder

     

Ein Datenvorlage Feld definiert den Benutzer   Schnittstellensteuerung und andere Eigenschaften   dass der Einfluss, wie das Feld verhält   im Content Editor und Seiteneditor.   Weitere Informationen zu Feldern finden   Kapitel 4, das Schablonenfeld.

     

Hinweis: Wenn Feldnamen definieren, sicherzustellen,   dass sie einzigartig sind auch zwischen   Feldabschnitte. Sowohl XSLT und .NET   Codenamen Verwendung Feld allein, ohne   Verweis auf die Abschnitte zu extrahieren,   Inhalt von Feldern.

Andere Tipps

Ich fand einen Weg, um diesen in .NET auf einem Projekt, das ich gerade arbeite. Eine der Vorlagen, die der Client gesetzt hatte musste „Eimer“, die verschiedene Feldabschnitte hatten, aber die Felder waren in der gleichen zwischen Eimern. Früher habe ich LINQ to Gruppe die Felder von Sektionsnamen, dann mit jeder Gruppierung von Feldern behandelt.

var sections = currentItem.Fields.GroupBy(field => field.Section);
foreach (var section in sections)
{
    if (section.Key.StartsWith("Bucket"))
    {
        buckets.Add(new Bucket(section)); //I made a bucket item, 
                                          //and passed each IGrouping<Field> to it
    }
}
item.Fields.Where(field => field.Section.ToUpper() == "META DATA" && 
                           field.DisplayName.ToUpper() == "TITLE").First().Value;

Sie können Felder verweisen durch ihre IDs:

C #:

string value = item["{00000000-0000-0000-000000000000}"]

oder

Field field = item.Fields["{00000000-0000-0000-000000000000}"]

Ich habe nicht versucht, aber ich denke, es wird auch in XSLT arbeiten:

<sc:text field="{00000000-0000-0000-000000000000}" />

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top