Hi, ich möchte gerne eigene CSS/JS Dateien, die bereits minifiziert sind hinzufügen, wenn das Plugin installiert wird und nicht generell im Kunden Template per Themes.php. {block name="frontend\_index\_header\_javascript" append}{/block} {block name="frontend\_index\_header\_css\_screen" append}{/block}
Dazu haben ich die entsprechenden Blöcke im Template angepackt und mit Append wollte ich die Dateien einbinden. Aber wie ist denn der offizielle Pfad zu den Plugin/Views/responsive/frontend/_public/src um die Dateien direkt einzubinden ohne Sie mit in den Compressor des Shop Frameworks zu hängen. Den die Dateien liegen schon minifiziert vor. Ich finde keine URL die das einbinden per im Plugin Ordner erlaubt.
Oh ein Wuppertaler, Hallo Herr Nachbar Schau dir doch hier einfach mal die Struktur der bestehenden Plugins an. Statt dem less Ordner eben der css Ordner Zum Beispiel vom Advanced Menu /\*\* \* @return ArrayCollection \*/ public function onCollectJavascriptFiles() { $jsDir = \_\_DIR\_\_ . '/Views/frontend/\_public/src/js/'; return new ArrayCollection(array( $jsDir . 'jquery.advanced-menu.js' )); }
Ansonsten gibt es einen speziellen Grund, warum du nicht der neuen Struktur von S5 folgen möchtest ( ausser das die Datei bereits minimiert ist ) ?
Hi Nachbar, es ist eine ganze Verzeichnis Struktur. Man bindet eine Datei ein und die referenziert wiederum Dateien im Unterordner. Ich weiß nicht, ob dann alle referenzierten Dateien mitgenommen werden. Zum einen will ich den ganzen Kram ja nur laden wenn das Plugin es auch benötigt und nicht generell im Template. Und zwecks Debugging möchte die Dateien gerne gesondert von der komprimierten gesammelten JS Datei des Themes haben, solange es notwendig ist. Später wenn das Plugin fertig ist könnte man überlegen, das nach SW5 Vorgabe mit einzubinden. Das funktioniert schon so, wenn man sich an die Events anhängt. Allerdings werden komplett in eine Datei integriert und precompiliert. Für das JavaScript Debugging ist das nicht schön.
Also, wenn sich ein Beispiel an Shopware nimmt, nutzt man: $this-\>subscribeEvent( 'Theme\_Compiler\_Collect\_Plugin\_Javascript', 'onCollectJavascriptFiles' ); $this-\>subscribeEvent( 'Theme\_Compiler\_Collect\_Plugin\_Css', 'onCollectCssFiles' );
Dann in seinem Theme Einstellungen solange JavaScript komprimieren aus und Compiler Caching deaktivieren. Dann ist zwar immer noch alles in einer Datei, aber wenigstens nicht komprimiert und man kann den JS Code debuggen.
Das Problem ist aber noch, dass man die Reihenfolge nicht direkt beeinflussen kann oder? Wenn meine Plugin JS abhängig davon ist ob z.B. JQuery vorher geladen ist. Und es sieht so aus, als wenn er weitere Abhängigkeiten in Unterverzeichnissen nicht automatisch mit zieht. Man kann ja nicht im Array die ganze Litanei auflisten oder soll das so sein?
[quote=„dkBITS“]Das Problem ist aber noch, dass man die Reihenfolge nicht direkt beeinflussen kann oder? Wenn meine Plugin JS abhängig davon ist ob z.B. JQuery vorher geladen ist. Und es sieht so aus, als wenn er weitere Abhängigkeiten in Unterverzeichnissen nicht automatisch mit zieht. Man kann ja nicht im Array die ganze Litanei auflisten oder soll das so sein?[/quote] Mit der Einbindung der externen Quellen über das cdn in den template Blöcken klappt es auf jeden Fall. Leider nicht wenn man die Libs lokal in sein Plugin legt.
Hallo zusammen, der alte Weg mit AddTemplateDir und dem Smary-Link-Plugin sollte weiterhin funktionieren. Siehe: http://wiki.shopware.com/Templatedokume … k_-_Plugin Beispiel: SwagPaymentPaypal/header.tpl at master · shopwareLabs/SwagPaymentPaypal · GitHub Man sollte es nur nicht verwenden, wenn man richtig mit LESS oder einem jQuery-Plugin arbeiten will. Heiner