Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich habe eine Frage, die die Generierung von Medien betrifft.
Ist es möglich, dass ein einzelnes Verzeichnis bei einer Vollgenerierung ausnahmslos immer vollständig generiert wird?
Hintergrund ist, dass eingebettete CSS-Files (oder JavaSkript-Bibliotheken) oft Referenzen auf andere Dateien (z.B. SVGs oder andere JavaSkript-Dateien) mit sich bringen.
Nun wäre es natürlich schön, wenn lediglich die "übergeordnete" Datei durch ein $CMS_REF()$ (z.B. in den HTML-Head) eingebunden wird und man nicht jede einzelne externe Referenz innerhalb der CSS- oder JavaSkript-Bibliothek manuell durch ein $CMS_REF()$ ersetzen muss, damit die Generierung erkennt, dass die jeweilige Datei verwendet wird.
Dies macht z.B. ein Updaten der jeweiligen Bibliothek deutlich schwieriger.
Gibt es hier vielleicht Lösungsansätze zu? Die Auslagerung aller CSS- und JS-Dateien auf einen externen Server sollte möglichst vermieden werden.
Vielen Dank im Voraus!
Viele Grüße
Julian
Hallo Julian,
hier gibt es mehrere Lösungsansätze:
FS_REFERENCE definieren, mit der man nur MediaFolder auswählen kann:
<FS_REFERENCE name="pt_mediafolder">
<FILTER>
<ALLOW type="mediafolder"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="mediafolder"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
Den Inhalt des Ordners (wenn auch die Medien aus Unterordnern berücksichtigt werden sollen, in der zweiten Zeile "false" durch "true" ersetzen) referenzieren, aber nicht ausgeben:
$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_FOR(media, pt_mediafolder.get.getChildren(mediaClass, false))$
$CMS_SET(void,ref(media).url)$
$CMS_END_FOR$
Gegebenenfalls kann man die erzeugte Seite hinterher auch noch löschen, wenn dort nichts sinnvolles ausgegeben wird: $CMS_SET(#global.stopGenerate,true)$
Ich hoffe, einer dieser Wege führt Dich zum Ziel.
Viele Grüße aus Dortmund
Holger
Hallo Julian,
hier gibt es mehrere Lösungsansätze:
FS_REFERENCE definieren, mit der man nur MediaFolder auswählen kann:
<FS_REFERENCE name="pt_mediafolder">
<FILTER>
<ALLOW type="mediafolder"/>
</FILTER>
<LANGINFOS>
<LANGINFO lang="*" label="mediafolder"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name=".">
<SOURCES>
<FOLDER name="root" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
Den Inhalt des Ordners (wenn auch die Medien aus Unterordnern berücksichtigt werden sollen, in der zweiten Zeile "false" durch "true" ersetzen) referenzieren, aber nicht ausgeben:
$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_FOR(media, pt_mediafolder.get.getChildren(mediaClass, false))$
$CMS_SET(void,ref(media).url)$
$CMS_END_FOR$
Gegebenenfalls kann man die erzeugte Seite hinterher auch noch löschen, wenn dort nichts sinnvolles ausgegeben wird: $CMS_SET(#global.stopGenerate,true)$
Ich hoffe, einer dieser Wege führt Dich zum Ziel.
Viele Grüße aus Dortmund
Holger
Hallo Holger,
die zweite Option mit der separaten Teilgenerierung finde ich für unseren Anwendungsfall am passendsten. Vielen Dank für den Hinweis!
Viele Grüße
Julian