Im normal Fall wird die SEO-URL einer statischen Seite über den Namen/description gebildet. Ändert man nun den Namen der Seite, ändert sich auch der Link und damit könnten vorhandene eingetragene Links plötzlich nicht mehr funktionieren.
Um das zu verhindern, ist es praktisch der Namen für die SEO-URL unabhängig vom Namen erzeugen zu können. Da helfen die SEO Einstellungen im Punkt "SEO-Urls Shopseiten Template". Wir brauchen noch ein Freitextfeld mit dem DB-Spaltennamen "seourl". Nun ändern wir das Template:
{if $site.attributes.core.seourl}{$site.attributes.core.seourl}{else}{$site.description}{/if}
Wenn also dort im neuen Feld etwas angegeben ist, wird dieses verwendet und ansonsten weiterhin der Name. Das hat den Vorteil, dass man nur die Seite anpassen muss, die man umbenennen möchte und nicht jede.
Eine kleine Klasse, die ich mal für ein kleines Projekt geschrieben hatte, das mein Bruder brauchte (Verarbeitung und Katalogisierung von mehren 10.000en RTF-Dokumenten). Die Klasse liest alle Dateien eines Verzeichnisses und die alle seiner Unterverzeichnisse ein.
package de.hannespries.commons.io;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class RecursiveFileSeeker {
public static List<File> list(File folder, List<File> result, boolean allowFolders) {
return list(folder, result, allowFolders, new ArrayList<>());
}
public static List<File> list(File folder, List<File> result, boolean allowFolders, List<String> excludeDirnames) {
try {
if (!folder.isDirectory()) {
return result;
}
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory() && !excludeDirnames.contains(file.getName())) {
if (allowFolders) {
result.add(file);
}
if(!excludeDirnames.contains(file.getName())){
result = list(file, result, allowFolders, excludeDirnames);
}
} else {
result.add(file);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}