Skip to main content

Sprachkürzel bei der Verwendung der Advanced URL's

Comments

8 comments

  • Zendesk API User
    Author: Peter_Jodeleit - 9/21/2016 16:29

    Die Anforderung lässt sich nur korrekt umsetzen, wenn man eine eigene Implementierung einer UrlFactory als Modul bereitstellt und nutzt. Das kann z.B. auf Basis der Beispielimplementierung geschehen, der Code ist dafür freigegeben.

    0
  • Zendesk API User
    Author: mbergmann - 9/22/2016 11:40

    Hallo Max,

    Du könntest dem Sitestore-Root entsprechende SEO-URLs zuweisen. Das geht aktuell nicht per GUI sondern nur über die API. D.h. Du müsstest mit einem kleinen Menü-Skript für die jeweiligen Sprachen die SEO-URLs setzen.

    In etwa so:

    import de.espirit.common.base.Logging;

    import de.espirit.firstspirit.access.GuiScriptContext;

    import de.espirit.firstspirit.access.Language;

    import de.espirit.firstspirit.access.project.TemplateSet;

    import de.espirit.firstspirit.access.store.Store;

    import de.espirit.firstspirit.access.store.globalstore.GlobalStoreRoot;

    import de.espirit.firstspirit.access.store.globalstore.URLProperties;

    import de.espirit.firstspirit.access.store.sitestore.SiteStoreRoot;

    import de.espirit.firstspirit.agency.LanguageAgent;

    import de.espirit.firstspirit.agency.ProjectAgent;

    import de.espirit.firstspirit.agency.SpecialistsBroker;

    import de.espirit.firstspirit.agency.StoreAgent;

    import java.util.List;

    import java.util.Locale;

    StoreAgent storeAgent = context.requireSpecialist(StoreAgent.TYPE);

    List<Language> languages = context.requireSpecialist(LanguageAgent.TYPE).getLanguages();

    GlobalStoreRoot globalStoreRoot = (GlobalStoreRoot) storeAgent.getStore(Store.Type.GLOBALSTORE);

    URLProperties urlProperties = globalStoreRoot.getUrlProperties();

    SiteStoreRoot siteStoreRoot = (SiteStoreRoot) storeAgent.getStore(Store.Type.SITESTORE);

    //only use first template set here

    TemplateSet templateSet = context.requireSpecialist(ProjectAgent.TYPE).getTemplateSets().get(0);

    try {

        urlProperties.setLock(true);

        for (Language language : languages) {

            urlProperties.setStoredUrl(

                    '/'+language.getAbbreviation().toLowerCase(Locale.ENGLISH),

                    siteStoreRoot,

                    language,

                    templateSet

            );

        }

        urlProperties.save();

        urlProperties.setLock(false);

    } catch (Exception e) {

        context.logError("Could not modify URL settings");

    }

    Es müssten natürlich (vorher!) einmal alle URLs zurückgesetzt werden.

    Dadurch dass hier letztlich "echte verschiedene" URLs erzeugt werden, sollte es auch nicht zu Konflikten und somit zu den numerischen Ergänzungen kommen.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: mbergmann - 9/22/2016 13:41

    Hallo Max,

    die Einstellungen werden ganz normal persistiert - ich habe es jetzt nicht explizit getestet, es würde mich aber sehr wundern wenn hier nach einem Neustart irgendwas verschwinden würde. Die URLs erscheinen übrigens sogar in der Konfigurations-Liste der SEO-URLs wenn sie einml per Skript angelegt sind - dort könnten sie natürlich gelöscht werden ;-)

    Ich habe gerade nochmal getestet, wie es sich mit der Funktion "Gespeicherte URLs zurücksetzen" verhält: Da die sich (sinnvollerweise) nicht auf Ordner auswirkt, kann man die auch kaum "versehentlich" löschen.

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: MMerwar - 9/22/2016 13:32

    Hallo Michael,

    deine Lösung via Skript funktioniert einwandfrei und entspricht genau unseren Vorstellungen.

    Hätte dazu noch eine kurze Frage. Ist diese Umstellung der URLProperties dann dauerhaft oder kann diese auch verschwinden? Beispielsweise nach einem Server Neustart?

    Viele Grüße

    Max

    0
  • Zendesk API User
    Author: l-kozuch - 3/7/2017 11:04

    Hallo Michael,

    in unserem Projekt nutzen wir das Mandantenprinzip und haben deswegen in der Struktur mehrere Länderauftritte. Nun habe ich dasselbe Problem wie Max, jedoch bei nur einem Mandanten (Japan), da dort die Anzeigenamen in Japanisch nicht gepflegt sind. Gibt es auch eine Skriptvariante die auf einem bestimmten Strukturordner rekursiv ausgeführt werden kann? Ich will nämlich die URL der anderen Mandanten nicht "kaputt" machen, da dort die Anzeigenamen der Ordner sauber übersetzt sind.

    Besten Dank vorab und viele Grüße

    Lukas

    0
  • Zendesk API User
    Author: MMerwar - 9/22/2016 13:46

    Hallo Michael,

    danke dir für die Information. Habe gerade auch nochmal ein wenig das Skript getestet und konnte keine negativen Effekte oder Fehler finden. Schaut soweit alles gut aus :-)

    Vielen Dank für das sehr hilfreiche Skript.

    Viele Grüße

    Max

    0
  • Zendesk API User
    Author: mbergmann - 3/8/2017 8:10

    Hallo Lukas,

    das Skript ist nur dazu da, auf dem SitestoreRoot die SEO-URLs zu setzen (weil es dafür schlicht keine GUI gibt). Wenn Du das auf einem Unterordner eines Mandanten in der Struktur machen willst, müssten die "Bordmittel" reichen, d.h. einfach für dessen Struktur-Ordner über die GUI eine SEO-URL definieren.

    Oder habe ich etwas falsch verstanden?

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: l-kozuch - 3/9/2017 13:14

    Hi Michael,

    stimmt natürlich, habe das in den globalen Einstellungen (URL-Einstellungen) für den Mandanten gemacht.

    Danke dir und viele Grüße

    Lukas

    0

Please sign in to leave a comment.