Welche Version setzt Ihr ein?
Mit Version 4.2 gibt es da wohl einige tolle neue Features in diesem Bereich.
Wir haben aktuell noch 4.1 und haben uns ein Skript gebaut, dass so umgebaut werden könnte, dass es macht, wass Ihr braucht - allerdings ist das bei uns noch mehr dazugebaut. Ich habe mal versucht die zusätzlichen Teile auszubauen.
Unser Skript:
//!Beanshell
import java.util.Iterator;
import java.util.List;
import de.espirit.firstspirit.access.GenerationScriptContext;
import de.espirit.firstspirit.access.editor.value.BinaryMedium;
import de.espirit.firstspirit.access.store.StoreElement;
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.store.mediastore.MediaFolder;
import de.espirit.firstspirit.access.project.Resolution;
import de.espirit.firstspirit.access.store.mediastore.Picture;
import de.espirit.firstspirit.access.store.mediastore.PictureResolution;
import de.espirit.firstspirit.generate.ScriptResultWrapper;
import de.espirit.firstspirit.access.store.PageParams;
import de.espirit.firstspirit.access.store.ContentProducer;
import de.espirit.firstspirit.generate.DefaultUrlCreator;
private static StringBuffer resultBuffer = new StringBuffer();
try {
// retrieve MediaFolder from GUI
Object o = context.getProperty("folder");
MediaFolder mf = null;
if (o instanceof MediaFolder) { // is MediaFolder
mf = (MediaFolder) o;
}
if (mf == null) throw new IllegalArgumentException("Parameter is is not a valid Element from the Media-Store!");
// get resolution
String res = context.getProperty("resolution")+"";
// get language
lang = context.getLanguage();
// select all pictures and write references
List l = mf.getChildren(Media.class, true).toList();
for (Iterator iter = l.iterator(); iter.hasNext();) {
Media m = (Media) iter.next();
// only relevant for pictures
if (m.getType() == Media.PICTURE) {
resultBuffer.append("<img src=\"$CMS_REF(media:\"");
resultBuffer.append(m.getUid());
resultBuffer.append("\", resolution:\"").append(res);
resultBuffer.append("\")$");
resultBuffer.append("\" />");
}
}
result.setValue(resultBuffer.toString());
} catch (Exception e) {
context.logError("Failed to dummy-reference folder '" + context.getProperty("st_folder") + "' !");
context.logError("Message: " + e.getMessage());
}
Formular:
<CMS_MODULE>
<CMS_INPUT_FILE name="st_folder" allowFolder="yes" hFill="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Medienordner" description="Bitte einen Medienordner wählen"/>
</LANGINFOS>
</CMS_INPUT_FILE>
<CMS_INPUT_COMBOBOX name="st_resolution" useLanguages="no">
<ENTRIES>
<ENTRY value="ORIGINAL">
<LANGINFOS>
<LANGINFO lang="*" label="ORIGINAL"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="bild1">
<LANGINFOS>
<LANGINFO lang="*" label="Bild 1"/>
</LANGINFOS>
</ENTRY>
<ENTRY value=bild2">
<LANGINFOS>
<LANGINFO lang="*" label="Bild 2"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Auflösung" description="Die Auflösung, in der alle Bilder des Medienordners veröffentlich werden sollen"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
</CMS_MODULE>
Ausgabe im Absatz:
$CMS_SET(set_media_sitemap)$
$CMS_RENDER(script:"mediasitemap",folder:st_folder,resolution:st_resolution)$
$CMS_END_SET$
$CMS_VALUE(set_media_sitemap)$