2016-11-16 3 views
1

Als Umbraco-Entwickler bin ich ziemlich neu bei Sitecore und war bisher ziemlich genervt, dass einige der Funktionen, die manuell in Umbraco hinzugefügt werden können, extrem verworren und schlecht sind dokumentiert in Sitecore.Kategorisierte Auswahlliste in Sitecore

Im Wesentlichen habe ich mehrere Sprachen Seiten:

  • Englisch
  • Französisch
  • Deutsch

Unter jedem dieser Standorte eine Reihe von Artikeln sind:

  • Englisch

    • Artikel 1
    • Artikel 2
  • Französisch

    • Artikel 3
    • Artikel 4

Was ich erreichen möchte, ist eine Eigenschaft im Backend, die nach Land kategorisiert ist und es dem Benutzer ermöglicht, mehrere Artikel aus verschiedenen Sprachwebsites auszuwählen. So könnte ich zum Beispiel Artikel 1 und Artikel 3 auswählen. Im Idealfall würde das Select-Steuerelement in etwa so aussehen, mit den Ländern als fette, nicht auswählbare Kategorien und die darunter liegenden Optionen würden dem Standard-Mehrfachauswahlverhalten unterliegen.

Image of desired result

Ist jemand bewusst, wie dies kann in Sitecore erreicht werden? Alternativ kennt jemand irgendwelche Sitecore-Marktplatz-Plugins, die mir erlauben würden, dies zu erreichen, da bisher die Dokumentation und Literatur im Internet diesbezüglich fehlte.

Jede Hilfe oder Hinweise würden sehr geschätzt werden.

Antwort

2

Sie können so etwas mit einer TreeList erreichen. Es wird wie ein Baum aussehen, also nicht genau so, wie Sie es wollten, aber die Funktionalität, die Sie brauchen, kann getan werden. Die TreeList kann mit dem "source" -Wert angepasst werden, um einen Teil der Sitecore-Struktur anzuzeigen, bestimmte Elemente nicht auswählbar zu haben usw.

Eine gute Quelle kann gefunden werden here. In Ihrem Fall verwenden Sie die Optionen Datascource und ExcludeTemplatesForSelection/IncludeTemplatesForSelection für die Quellabfrage.

0

Ich kann den größten Teil davon mit einer codierten Datenquelle erhalten. Wenn Sie eine Klasse erstellen, die von IDataSource erbt, können Sie sie mit beliebigen Elementen anpassen. Was ich nicht bekommen kann, ist zu leugnen, dass der Benutzer die bold Länder auswählt.

Here ist ein Artikel von John West darüber und der Code unten ist Code, den ich derzeit verwende. Ich verwende diesen Code in einer Rendering-Eigenschaft, sodass Sie viele Referenzen auf Renderings sehen. Aber alles, was Sie suchen, ist, eine Reihe von Items zurückzugeben.

Dann geben Sie in der Datenquelle das Wort "code:" gefolgt von Ihrem Klassennamen "," den Assemblynamen an.

Code: Sitecore.Sharedsource.Data.FieldSources.CustomFieldDataSource, Sitecore.Sharedsource

public class GetStyles : IDataSource 
{ 
    public Item[] ListQuery(Item item) 
    { 
     bool flag = !string.IsNullOrWhiteSpace(Context.RawUrl) && Context.RawUrl.Contains("hdl"); 
     if (flag) 
     { 
      string renderingId = FieldEditorOptions.Parse(new UrlString(Context.RawUrl)).Parameters["rendering"]; 

      if (!string.IsNullOrEmpty(renderingId)) 
      { 
       ItemUri renderingItemUri = new ItemUri(renderingId); 

       var containers = DependencyResolver.Current.GetService<IPresentationRepository>().GetStylesItem(renderingItemUri.ItemID, item); 

       if (containers == null) 
        return new Item[0]; 

       return containers.Children.ToArray<Item>(); 
      } 
     } 

     var result = new Item[0]; 
     return result; 
    } 
} 
Verwandte Themen