Editen in de juiste taal met een content editor taal waarschuwing
Sitecore is makkelijk uitbreidbaar met leuke custom features om het de CMS gebruiker makkelijker te maken. De Content Editor Warning is er daar een van. Als je meer dan 1 taal hebt in Sitecore zul je zo nu en dan van taal moeten switchen. Bovendien moet je uitkijken dat je content in de juiste taal aanmaakt.
Recommendation: geef gebruikers alleen recht op de taal die ze nodig hebben.
Daarnaast kun je ook een "Content Editor Warning" maken.
Een Website specifieke Content Editor Warning met handige link's om van taal te switchen.
Een Content Editor Warning is een Pipeline Processors in de getContentEditorWarnings pipeline.
Hoe weet je in welke taal/talen een item mag zijn?. Dat is klant specifiek Sitecore weet dit niet dus OOTB is deze functie nu niet mogelijk. Je kunt kijken of je item onder een node staat in je sitedefinities en daar de default language uit halen. Dat werkt niet als je ook meertalige bomen hebt, dan kun je de site definitie uitbreiden. Of gewoon de logica programmeren.
zie de code op https://github.com/jbluemink/Sitecore-Language-Editor-Warning
hier is de site definitie uitgebreid met een custom attribuut om meer dan 1 taal mee te kunnen geven.
Aan een content warning kun je een titel tekst en een option lijst meegeven. In de option lijst kunnen we links meegeven om de taal te switchen. Dat doen we met de item:load (zie ook http://www.sitecore.net/nl-be/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2011/08/load-or-reload-an-item-in-the-sitecore-aspnet-cms.aspx)
We geven de language mee en geen versie nummer dan krijgen we de laatste versie van die taal. Ook zetten we de IsExclusive flag. Anders zou deze warning onderdrukt worden door de “The current item does not have a version in Language X” het is heel aannemelijk dat je deze warning krijgt immers zit je niet in de juiste taal dus normaal is er dan ook geen versie van deze taal.
Elke site in Sitecore heeft optioneel een standaardtaal. Gedefinieerd in de config <sites><site> node. Bijvoorbeeld: <site name="website" language = "nl-NL" ..... />
Op Meertalige site's kun je gebruiken maken van een custom attribuut altLanguage. Het is mogelijk om meer dan een alternatieve taal in te stellen met behulp van '|' symbool als een separator, op dezelfde manier als voor de host. <site name="website" language="nl-BE" altLanguage="fr-BE | nl" ..... />
Patch de Pipeline Processors in de web.config.
<!--
Purpose: With this module you get a content editor warning if the wrong language is selected for the current website
-->
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<getContentEditorWarnings>
<processor type="Language.Editor.Warning.Pipelines.GetContentEditorWarnings.IsCorrectLanguage, Language.Editor.Warning" patch:before="processor[@type='Sitecore.Pipelines.GetContentEditorWarnings.ItemNotFound, Sitecore.Kernel']"/>
</getContentEditorWarnings>
</pipelines>
</sitecore>
</configuration>
Plaats deze config in een bestand met filenaam, GetContentEditorWarnings.IsCorrectLanguage.config in de App_Config/Include>br/> En de bijbehorende dll in de bin folder.
We willen deze processor als eerste plaatsen om er voor te zorgen dat andere processors zoals de “The current item does not have a version in Language X” deze niet kunnen overschrijven. Vandaar de patch before ItemNotFound dat is in de standaard web.config de eerst processor in de ContentEditorWarning pipeline.
Een gecompileerde versie van deze module staat op de Sitecore marketplace. https://marketplace.sitecore.net/en/Modules/Sitecore_Language_Content_Editor_Warning.aspx