Sitecore Content Editing Teil 5 – Früher war alles besser

Content authors Sitecore Sitecore Content Editing Blog Series

Nachdem ich euch letztes Mal etwas über Sitecore Publishing und dazugehörige Fallstricke erzählt habe, möchte ich euch heute etwas mehr zu Sprachen und Versionierung in Sitecore erzählen.

Wie üblich ist der Artikel in deutsch und englisch verfügbar.

Los geht’s!

Versionierung in Sitecore

Bevor wir in Sitecores Versionierung einsteigen, sollten wir kurz die Grundlagen wiederholen. Sitecore verwendet Items und Templates, wobei Templates eine Art Baupläne für Items sind. Jedes Template enthält eine Liste von Fields, die sich in jedem Item dieses Typs wiederfinden. Fügt man ein neues Feld zum Template hinzu, erscheint es automatisch auch in allen Items mit diesem Template. Sitecore bietet viele verschiedener Feldtypen, aber nur drei verschiedene Feld-“Verhalten”: Versioned, Unversioned and Shared. Beachtet, dass diese sich gegenseitig ausschliessen.

  • Versioned
    Dies ist das Standardverhalten. Jedes Feld kann mehrere Sprachen und Versionen haben. Es kann beliebig viele Werte für jedes Feld geben, denn die englische Version 1 ist anders als Version 2 und die deutsche Version 1 ist anders als die englische Version 1.
  • Unversioned
    Ein solches Feld hat zwar verschiedene Werte pro Sprache, aber keine weiteren Versionen innerhalb einer Sprache. Die Anzahl der Werte ist damit limitiert durch die Anzahl der verfügbaren Sprachen.
  • Shared
    Der Feldwert ist über alle Sprachen identisch.

Um das Konzept etwas klarer zu machen, habe ich ein Template mit jeweils einem Textfeld pro Verhalten angelegt.

Versioning Example Template

Anschliessend habe ich ein solches Item direkt unter dem Habitat Item angelegt.

Versioning Example Item

Einige Eigenheiten von Sitecore sind bereits ersichtlich:

  • Sitecore zeigt einen Hinweis, um was für ein Feldverhalten es sich bei den Feldern handelt. Kein Hinweis bedeutet, es handelt sich um ein versioniertes Feld.
  • Sitecore erzeugt automatisch eine Version in der Sprache, in der das Item erzeugt wird.

Wir können die automatisch erzeugte Version löschen, indem wir die Funktion Remove im Versions Ribbon nutzen.

Remove Version

Beachtet, dass das Item immer noch existiert. Wir haben also eine weiteres interessantes Verhalten von Sitecore entdeckt:

  • Ein Item kann auch ohne Versionen existieren.

Für den weiteren Verlauf erzeugen wir zwei neue englische Versionen mittels Add im Versions Ribbon.

Add Version

Anschliessend befüllen wir alle Felder der Version 2, um das Verhalten zu untersuchen.

Filled Version 2

Wenn wir nun auf Version 1 wechseln, können wir sehen wie Sitecore mit den Feldern umgeht.

Filled Version 1

Gleich mehrere Dinge sind hier auffällig, wir gehen sie Schritt für Schritt durch:

  • Das versionierte Feld ist leer, es wurde nicht verändert, als wir Version 2 bearbeitet haben.
  • Sowohl das versionierte als auch das shared Field wurden verändert, als wir Version 2 verändert haben.
  • Wir sehen eine Warnung, dass unsere Version nicht auf der Website erscheinen wird, sowohl als Hinweis im Contentbereich als auch in der quick action bar. Dies ist ein Hinweis auf folgendes Verhalten:
    1. Es kann immer nur eine Version publiziert sein
    2. Es wird immer die letzte Version publiziert

Nun erzeugen wir eine deutsche Version von unserem Item um zu bestätigen, wie die Felder reagieren. Der einfachste Weg ist, zu deutsch zu wechseln und dem Vorschlag im Contentbereich zu folgen.

Create German Version 1 German Filled Version 1

Wie ihr sicherlich schon vermutet habt, ist lediglich das shared Field bereits gefüllt, während das versionierte und das unversionierte Feld leer sind.

Versionen vergleichen

Wir wechseln zurück zur englischen Version, um uns ein sehr hilfreiches Tool anzuschauen: den Versionsvergleich (Versions -> Compare).

Version Compare

In diesem Dialog könnt ihr schnell sehen, was sich zwischen Versionen verändert hat. Besonders bei vielen Feldern könnt ihr euch somit schnell einen überblick verschaffen, insbesondere bei Änderungen in Rich-Text-Feldern.

Übersetzen

Es gibt eine ähnliche Funktion für Sprachen, die besonders für Übersetzer hilfreich ist. Diese Funktion ist eher ein Modus und ihr aktiviert ihn, indem ihr Translate im Version Ribbon anschaltet.

Translate

Die Eingabefelder teilen sich nun in zwei Spalten auf. Um diese sinnvoll zu nutzen, müssen wir die Sprache zu deutsch wechseln.

Translate to German

Plötzlich macht der Modus eine Menge Sinn! Der Content Author sieht nun die englischen Versionen der Felder und kann gleichzeitig den deutschen Inhalt für die Felder pflegen – Perfekt für Übersetzer.

Um dieses Feature optimal zu nutzen, sollte ihr die folgende Regel beachten: Sprachversionen eines Items sollten immer Übersetzungen sein! Falls ihr logisch anderen Inhalt habt, legt lieber ein neues Item an.

Exkursion: Standard Values

Bevor ich euch die Reset Fields Funktion zeige, sollten wir und kurz das Konzept der Standard values anschauen. Standard values sind ein cleveres Sitecore Feature welches euch das arbeiten mit leeren Feldern erleichtert. Sie erlauben es, einen Fallback-Wert zu definieren, der immer dann zum Tragen kommt, wenn ein Feld keinen Inhalt hat. Um solche Werte zu definieren, gehen wir zum Template, wählen den Options Ribbon und klicken Standard values.

Create Standard Values

Sitecore erzeugt nun ein Item mit dem Namen __Standard Values unter dem Template selbst. Wir füllen einige Felder mit Testwerten ab und speichern.

Standard Values

Reset Fields

Felder zurückzusetzen bedeutet, dass der Inhalt dieser Felder entfernt wird. Wenn wir zur Version 2 unseres englischen Items navigieren, sehen wir keinen Unterschied zu vorher. Das liget daran, dass wir alle Felder mit Inhalt abgefüllt haben. Setzen wir die Felder nun zurück und schauen was passiert. Dazu startet ihr den Reset Field Values Dialog über Reset im Versions Ribbon.

Reset Fields

Der Dialog gibt euch eine Vorschau des Items nach dem Zurücksetzen. Wir markieren all 3 Felder und klicken Reset.

Reset Field Values Dialog Standard Values Fallback

Alle drei Felder enthalten nun den Inhalt des __Standard Values Items. Sitecore gibt euch ausserdem einen Hinweis, dass es sich beim Inhalt des Feldes um den Standard Value dieses Feldes handelt. Was dieses Konzept so mächtig macht, ist dass eine Änderung in den Standard Values sofort in allen Items dieses Typs reflektiert wird.

Zum Unterschied zwischen nichts und nichts

Ihr fragt euch vielleicht warum wir umständlich den Dialog zum Zurücksetzen der Felder verwenden, anstatt einfach deren Inhalt zu löschen. Wenn wir das tun würden, würden die Standardwerte allerdings nicht übernommen. Stattdessen wären die Felder leer.

Empty Field

Der Grund ist, dass Sitecore zwischen einem leerem Feld (null) und einem Feld mit leerem Text unterscheidet. Würde es das nicht tun, könnte man einen Text von einem Standardwert nicht durch einen leeren Text überschreiben. Hier also die Kurzanleitung für leere Feldwerte:

  1. Möchtet ihr einen leeren Text im Feld, löscht einfach den Text im Feld. Der Wert dieses Feldes wird nicht von den Standardwerte beeinflusst.
  2. Möchtet ihr ein leeres Feld, nutzt den Reset Fields Dialog. Der Wert des Feldes wir auf den Standardwert zurückfallen und sich automatisch anpassen, wenn dieser sich ändert.

Versionierte Medien

Media Items können in Sitecore auch versioniert werden. Die Funktionalität zum anlegen von versionierten Media Items ist etwas versteckt, aber jeder Editor sollte solche Items anlegen können. Um euch die unterschiedliche Verwendung zu zeigen, fügen wir ein versioniertes und ein unversioniertes Bild zu unserem Beispielitem hinzu.

Image Fields

Damit wir Medien zum Testen haben, fügen wir ein paar Testbilder für später in die Media Library hinzu. Das erste Bild laden wir regulär hoch, via Upload file.

Upload File

Sitecore lädt Dateien standardmässig unversionert hoch, so dass alle Datei-relevanten Felder shared sind. Ihr könnt ausserdem sehen, dass das Template sich in einem Ordner namens Unversioned befindet.

Unversioned Media Item

Wenn wir ein versioniertes Media Item anlegen wollen, müssen wir den Upload files (advanced) Dialog verwenden und die Option Make uploaded media items versionable anwählen.

Upload File Advanced

Dieses Media Item ist nun versioniert.

Versioned Media Item

Ich habe beide Items nun umbenannt, damit wir sie unterscheiden können. Wenn ich auf deutsch wechsle und für jedes Item eine neue Version anlege, schient das unversionierte item okay zu sein, währen das versionierte Item kaputt aussieht.

Comparing Media Items

Der Grund ist, dass unser versioniertes Item keinen Inhalt in den Datei-relevanten Feldern hat. Wir können diese aber hinzufügen, indem wir die Attach-Funktionaliät des Media Fields benutzen. Beachtet, dass alle Datei-relevanten Felder automatisch befüllt werden. Ich habe dieses Mal ein Bild meines Kollegen Iulian ausgewählt, damit die Versionen unterscheidbar sind. Normalerweise würde man hier ein Bild hochladen, das beispielsweise einen deutschen Text enthält.

Comparing Media Items - Fixed

Das sieht schon besser aus! Wir haben zwei funktionale Media Items mit jeweils einer deutschen und einer englischen Version. Um zu sehen, wie wir damit arbeiten können, navigieren wir zurück zu unserem Beispiel-Item. Hier wählen wir das unversionerte Bild im Versioned Image Field und das versionierte Item im Shared Image Field.

 

Versioned vs Shared Image

Das Ergebnis ist wie erwartet. Wenn wir jedoch zu deutsch wechseln, sehen wir den Unterschied zwischen beiden Ansätzen.

Versioned vs Shared Image - German

Währen das versionierte Feld leer ist (in der deutschen Version haben wir keinen Inhalt eingepflegt), zeigt das shared Field die deutsche Variante unseres Bildes. Ihr müsst entscheiden, welcher Ansatz im jeweiligen Fall derbessere ist.

Option 1: Versioniertes Image Field

Falls ihr unterschiedliche Bilder in unterschiedlichen Sprachen verwenden wollt, benutzt ein versioniertes Image Feld. Für jede Version des Items könnt ihr unabhängig ein Bild auswählen.

Option 2: Shared Image Field

Die zweite option ist komfortabler für Content Autoren. Mit einem shared Image Field verwendet ihr am besten ein versioniertes Media Item. Sitecore wird die zu zeigende Version des Bildes anhand der gewählten Sprache ermitteln. Ein nachteil ist, dass das Auswählen eines anderen Bildes alle Versionen des Items gleichzeitig betrifft.

Dieses Konzept trifft überigens für alle Referenztypen (oder Linktypen, wie sie in Sitecore heissen) zu. Manchmal möchte man verschiedene Items mit einem versionierten Feld verlinken, und manchmal verwendet man lieber ein shared Feld, welches auf ein versioniertes Item zeigt.

Das war’s

So viel zu Sprachen und Versionen. Bis zum nächsten Mal!

No Thoughts to Sitecore Content Editing Teil 5 – Früher war alles besser

Comments are closed.