Frage

Arbeiten mit mehreren Sprach Websites in Sitecore 6.2 Ich mag würde können, hat Sitecores ersetzen „“ (leerer Raum, die traditionell mit% ersetzt 20) in URLs mit einem Bindestrich.

z. www.MySite.com/Hello Welt> www.MySite.com/Hello-World

Bisher kein Problem, wir fügen Sie einfach einen weiteren Eintrag encodeNameReplacements

<replace mode="on" find=" " replaceWith="-" />

Dann ist unsere Autoren von Inhalten zu verhindern, dass Gegenstände mit einem Bindestrich in ihrem Namen zu schaffen (die Sitecore als mit einem Raum verstehen würde, wenn ihre URLs zu lesen, in einem 404 resultierenden Not Found) wir den Bindestrich in der Liste der Zeichen hinzufügen können, verboten in Itemnamen, mit

 <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]-"/>

Das alles funktioniert gut - bis ich eine neue Sprache Definition versuchen und erstellen. Sprachen in Sitecores können entweder einen einfachen Sprachcode (zB de, da, de usw.) oder eine Sprache und Region-Code (ISO), wie de-DE, da-DK, de-DE etc. Für unsere Standorte müssen wir die Regionalcodes wie wollen wir regionale Sprachvariation (zB Schweizer Französisch und Schweizerdeutsch) unterstützen. Aber natürlich habe ich jetzt den Bindestrich in Itemnamen verboten (und Sprachen, wie alles andere in Sitecores werden als Elemente definiert). In der Tat verlangt Sitecores, dass ein Sprachname korrekt als Kulturbezeichner aufgebaut ist, so dass ich keine Sprache einen beschreibenden Namen (zum Beispiel amerikanisches Englisch) mit dem ISO-Code angegeben in dem ISO-Code-Feld der Vorlage zuweisen kann.

Kann jemand empfehlen, eine geeignete Lösung für dieses? Soll ich den Bindestrich aus dem InvalidItemNameChars Knoten entfernen und einen benutzerdefinierten Code-Schnipsel schreiben, dass Fallen Erstellung von Bindestrichen Itemnamen versucht i? Wenn ja, wie soll ich interecpt die Schaffung Veranstaltung?

Ich bin verabscheuen die Schnittstelle anpassen, wo es nicht notwendig ist, zumal ich betroffen bin diese Probleme für Sitecore Versions-Updates erstellen können, so, wenn es andere Lösungen würde ich lieben, sie zu hören.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Dies verwendet die Regel-Engine Sonderzeichen zu ersetzen, wie Leerzeichen in Itemnamen:

https://marketplace.sitecore.net/en/Modules/Item_Naming_rules.aspx

Wenn Sie nicht den ersetzen, sondern nur übersetzt, wenn URLs Verarbeitung Sitecores Artikel Resolver versuchen würde, mit Bindestrichen für Itemnamen zu suchen, anstatt Leerzeichen und nicht passende Einzelteile finden. Wenn Sie nicht tatsächlich die Zeichen ersetzen, dann würden Sie das Element Resolver außer Kraft setzen müssen.

Wenn Sie die Namen mit Leerzeichen für den Benutzer sichtbar verlassen wollen, aber nennen tatsächlich die Elemente mit Bindestrichen, dann könnten Sie die Anzeigenamen für das Element auf den ursprünglichen Wert mit Leerzeichen gesetzt, wenn Sie die Räume Striche umbenannt, aber ich würde dagegen empfehlen.

Andere Tipps

Sie können eine Klasse schreiben und sie in das Element gespeichert Ereignis in der web.config. Schreiben Sie einfach die OnItemSaved Methode und hat es im Namen für den Bindestrich zu überprüfen. Ich denke, man bräuchte, um es auf Umbenennungs zu tun und auf Kopie als auch.

<event name="item:saved">
  <handler type="Sitecore.Links.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Tasks.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Globalization.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Rules.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="YourAssembly.ItemEventHandler, YourAssembly" method="OnItemSaved" />
</event>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top