Frage

Ich habe ein Element mit dem Namen Alle Rezepte, die Rezepte genannt R1, R2 und R3 enthält. Ich habe ein anderes Element mit dem Namen Meiner Rezepte, die ein Feld mit dem Namen treelist Rezepte hat und es enthält Werte R2 und R3 aus dem Alle Rezepten Elemente ausgewählt. Die Abfrage ich schreiben bin versucht für den Artikel Feld eines RSS-Feed.
Was ist die Abfragesyntax der Elemente in allen Rezepten, die in dem Rezepte Bereich Meiner Rezepte?

erscheinen zu zeigen,
War es hilfreich?

Lösung

Es kann nicht mit einer Sitecore Abfrage erfolgen. Erstellen Sie stattdessen eine benutzerdefinierte Feed-Klasse, die Sitecore.Syndication.PublicFeed und Überschreibung GetSourceItems() erstreckt. Hier ein Beispiel:

public class MyCustomFeed : Sitecore.Syndication.PublicFeed
{
  public override IEnumerable<Sitecore.Data.Items.Item> GetSourceItems()
  {
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Item contentFolder = master.GetItem("/sitecore/content/Home/MyContentFolder");

    //Do your processing here to get your feed items

    //I'm just grabbing what's in the content folder, but it could be something complex.
    ChildList cl = contentFolder.GetChildren();

    return cl;
  }
}


In Ihrem Typ Feld RSS-Feeds unter dem Extensibility Abschnitt, geben Sie den Klassenpfad und Montage für die benutzerdefinierte Klasse:

Utility.SitecoreLibrary.RSS Folder.MyCustomFeed, Utility.SitecoreLibrary


Lassen Sie die Elemente Feld RSS-Feed leer, da diese benutzerdefinierte Klasse nimmt seinen Platz ein.

Andere Tipps

Wenn Sie dies in Xslt schreiben, können Sie sc:listfielditems('fieldname',$item) verwenden, um einen Knotenmenge der Elemente in der Baumstruktur zu erhalten, die Sie dann durchläuft mit for-each.

Wenn Sie dies in .net schreiben, ich weiß nicht, -. Aber ich weiß, ein Kerl, der tut, und ich werde diese seine Art und Weise senden

kann ich nicht auf dem adams Kommentar Beitrag oben, so dass ich als Antwort hinterlassen werden: Es gibt keine Sitecores Funktion / Methode sc:listfielditems benannt. Können Sie doppelt überprüfen Sie Ihren Code?

Sind Sie mit SQL Server? Die Sitecores Kochbücher beraten Sie, so etwas zu tun:

MyItems = GetSomeItems("/home/whatever/allrecipes");
foreach(Item item in MyItems)
{
    if(item is in MyRecipes)
        do something
}

Die Argumentation ist, dass Abfragen für / home / was auch immer / Allrecipes wird vom Provider optimiert, während eine komplexe Abfrage Prüfung für Meinerezepte wäre teurer.

Referenz .

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