Optimizely veröffentlicht endlich neue und verbesserte Listeneigenschaften!

Seit Jahren wird die Generic PropertyList trotz der Warnung am Anfang der Dokumentation häufig verwendet. Es ist eine nicht unterstützte Funktionalität. Außerdem werden Links und Verweise in solchen Listen nicht von Optimizely nachverfolgt, und Sie werden beim Löschen von Inhalten nicht vor eingehenden Links gewarnt.

Eine Warnung für die alte und veraltete Generic PropertyList

Ich werde den Unterschied zwischen dem alten Weg und dem heute veröffentlichten neuen Weg anhand eines Beispiels veranschaulichen. Ich erstelle eine Liste mit Personen, jede mit einem Namen, einem Bild und einem internen Link.

Die alte generische PropertyList – klar bleiben!

Dies ist nicht der empfohlene Weg, war aber bis heute eine der Optionen.

Erstellen Sie eine Klasse, die die Informationen für eine Person enthält.

public class Person
{
    public string Name { get; set; }

    [UIHint(UIHint.Image)]
    public ContentReference Image { get; set; }
    
    public PageReference FavoritePage { get; set; }
}

Fügen Sie Ihrem Inhaltstyp eine solche Eigenschaft hinzu und verweisen Sie auf das Person-Objekt.

[EditorDescriptor(EditorDescriptorType = typeof(CollectionEditorDescriptor))]
public virtual IList PersonObjectList { get; set; }

Teilen Sie Optimizely CMS dann mit, dass Sie wirklich beabsichtigen, dies als Eigenschaft zu verwenden.

[PropertyDefinitionTypePlugIn]
public class PersonListProperty : PropertyList { }

Das ist es!

Wenn Sie Ihrer Liste neue Personenelemente hinzufügen, sieht es in Ordnung aus. Einziges Manko ist die fehlende Drag-and-Drop-Unterstützung für die Bild- und Linkeigenschaften.

Bearbeiten eines einzelnen Personenelements mit der alten generischen PropertyList

Ein kritischeres Problem ist die Listenansicht, in der Sie die Inhalts-ID des Bildes und des verknüpften Inhalts sehen, anstatt der Miniaturansicht und des Inhaltsnamens.

Eine Liste von drei Personen, alte generische PropertyList

Wenn Sie sich gerne die Hände schmutzig machen, können Sie dies mit Dojo oder diesem Addon von Jake Jones beheben. Tun Sie das nicht, verwenden Sie stattdessen die neuen Listeneigenschaften,

Die neuen Listeneigenschaften – nutzen Sie sie!

Wenn wir dieselbe Personenliste mit dem neuen Ansatz erstellen würden, würden wir einen Blocktyp zum Speichern der Personendetails erstellen. Auf diese Weise werden all die guten Dinge wie Export/Import und Handhabung von permanenten Links erledigt.

[ContentType(AvailableInEditMode = false)]
public class PersonBlock : BlockData
{
    public virtual string Name { get; set; }
    
    [UIHint(UIHint.Image)]
    public virtual ContentReference Image { get; set; }
    
    public virtual PageReference FavoritePage { get; set; }
}

Fügen Sie dann die Eigenschaft zu Ihrer Inhaltsseite hinzu.

public virtual IList PersonBlockList { get; set; }

Das war’s, es muss kein neuer Eigenschaftstyp explizit definiert werden!

Das Hinzufügen neuer Personen sieht sehr ähnlich aus wie zuvor, außer dass wir jetzt Drag-and-Drop-Unterstützung sowohl im Assets-Bereich als auch im Seitenbaum haben.

Bearbeiten eines einzelnen Personeneintrags mit neuer Listeneigenschaft

In der Listenansicht haben Sie die gleichen Eigenschaften und die gleiche Vorschau, die wir von regulären Eigenschaften gewohnt sind. Das Miniaturbild wird für das Bild und der Inhaltsname für die Seite angezeigt.

Die Blöcke können erweitert, reduziert und inline bearbeitet werden, ohne dass ein neuer Dialog geöffnet werden muss.

Eine Liste mit drei Personen, neues List Property

Ich will mehr!

Das ist alles gut, aber ich würde gerne einige Verbesserungen sehen!

  • Wenn alle Blöcke zusammengeklappt sind, sehen sie alle gleich aus. Ich möchte eine Eigenschaft definieren können, die anstelle des Blocknamens (im obigen Beispiel «PersonBlock») angezeigt wird, wenn der Block eingeklappt ist. Für Personen wäre die Name-Eigenschaft eine naheliegende Wahl.
  • Drag-and-Drop-Neuordnung! Derzeit kann die Sortierreihenfolge aktualisiert werden, indem Sie auf das Kontextmenü für ein einzelnes Element und dann auf «Nach oben» oder «Nach unten» klicken. Wenn Sie viele Artikel haben, funktioniert das nicht so gut. Ich will Drag-and-Drop!

Weiterlesen

Während ich damit beschäftigt war, diesen Blogbeitrag zu schreiben, veröffentlichte Bartosz Sekula einen großartigen Artikel, der mehr Details enthält. Guck mal!

Lesen Sie auch  Missouri State Basketball schlägt Evansville und sichert sich den dringend benötigten Sieg der Bears

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.