Hallo Thomas,
ich wollte das sowieso schon immer mal ausprobieren 🙂
Hier ein entsprechendes Skript, dass bei mir lokal funktioniert.
Da musst Du natürlich die Namen der Knoten/Eingabekomponente entsprechend anpassen.
Außerdem habe ich den String nur sehr rudimentär über die replaceAll bereinigt. Da muss wahrscheinlich noch bedeutend mehr ersetzt werden, damit die URL "gültig und lesbar" ist 😉
//!Beanshell
import de.espirit.firstspirit.agency.StoreElementAgent;
import de.espirit.firstspirit.agency.StoreAgent;
import de.espirit.firstspirit.access.store.contentstore.Content2;
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.store.Store.Type;
import de.espirit.firstspirit.access.store.globalstore.URLProperties;
templateset = context.project.templateSets.get(0);
languages = context.project.languages;
storeAgent = context.requestSpecialist(StoreAgent.TYPE);
urlProperties = storeAgent.getStore(Type.GLOBALSTORE).getChildren(URLProperties.class).getFirst();
storeElementAgent = context.requestSpecialist(StoreElementAgent.TYPE);
content2 = storeElementAgent.loadStoreElement("talente",Content2.UID_TYPE,false);
datasets = content2.getDatasets();
pageref = storeElementAgent.loadStoreElement("steigerbare_talente_detailseiten",PageRef.UID_TYPE,false);
urlPrefix = "/Regeln/Talentsystem/steigerbareTalente/";
urlSuffix = ".html";
urlProperties.setLock(true);
for(dataset:datasets) {
for(language:languages) {
url = urlPrefix + dataset.formData.get(null,"Name").get().replaceAll(" ","-").replaceAll("&","+") + urlSuffix;
urlProperties.setStoredUrl(url,pageref,language,templateset,dataset.entity);
}
}
urlProperties.save("urls adapted to dataset content for pageref talente");
urlProperties.setLock(false);
/*
for(dataset:datasets) {
for(language:languages) {
context.logInfo("URL: " + urlProperties.getStoredUrl(pageref,language,templateset,dataset.entity));
}
}
*/
Der auskommentierte Block unten dient nur zur Kontrolle. Wenn man den einkommentiert, werden die angepassten URLs auf der Konsole des SiteArchitect ausgegeben, damit man prüfen kann, ob alles so aussieht wie erwartet.
Die URL muss natürlich in das Projekt passen. Ich habe zwei Variablen urlPrefix und urlSuffix hinzugefügt, mit denen man das "drumherum" definieren kann. Wenn Du die URLs für mehr als einen Ausgabekanal anpassen willst, sollte das Suffix zum jeweiligen Ausgabekanal passen (z.B. .html, .json, .xml, .pdf, ...)
Auch fehlt noch die Sprachabhängigkeit. Du willst ja für mehrere Sprachen identische Inhalte setzen. Die URLs müssen aber eindeutig sein - doppelte sind nicht erlaubt. Irgendetwas musst Du in die URL reinbasteln (z.B das Sprachkürzel als zusätzliches Verzeichnis im Präfix)
Ich hoffe, dass Du das Problem mit Hilfe dieses Skriptbeispiels lösen kannst.
Viele Grüße
Holger
P.S. Wenn man die URLs einmal gesetzt hat, können die danach auch redaktionell bearbeitet werden (in den globalen Einstellungen unter URL Einstellungen. Wenn man das machen will, muss man natürlich vor dem automatischen Setzen prüfen, ob es bereits eine entsprechende URL gibt und wenn ja, diese NICHT überschreiben...